home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / drivers / dec0.c < prev    next >
C/C++ Source or Header  |  2000-04-23  |  83KB  |  2,204 lines

  1. /***************************************************************************
  2.  
  3.   Data East 16 bit games - Bryan McPhail, mish@tendril.co.uk
  4.  
  5.   This file contains drivers for:
  6.  
  7.     * Heavy Barrel                            (USA set)
  8.     * Heavy Barrel                            (World set)
  9.     * Bad Dudes vs. Dragonninja               (USA set)
  10.     * Dragonninja                             (Japanese version of above)
  11.     * Birdy Try                               (Japanese set)
  12.     * Robocop                                 (World bootleg rom set)
  13.     * Robocop                                 (World rev 3)
  14.     * Robocop                                 (USA rev 1)
  15.     * Robocop                                 (USA rev 0)
  16.     * Hippodrome                              (USA set)
  17.     * Fighting Fantasy                        (Japanese version of above)
  18.     * Sly Spy                                 (USA rev 3)
  19.     * Sly Spy                                 (USA rev 2)
  20.     * Secret Agent                            (World set)
  21.     * Midnight Resistance                     (World set)
  22.     * Midnight Resistance                     (USA set)
  23.     * Midnight Resistance                     (Japanese set)
  24.     * Boulderdash                             (World set)
  25.  
  26.     Heavy Barrel, Bad Dudes, Robocop, Birdy Try & Hippodrome use the 'MEC-M1'
  27. motherboard and varying game boards.  Sly Spy, Midnight Resistance and
  28. Boulderdash use the same graphics chips but are different pcbs.
  29.  
  30.     There are Secret Agent (bootleg) and Robocop (bootleg) sets to add.
  31.  
  32.   Thanks to Gouky & Richard Bush for information along the way, especially
  33.   Gouky's patch for Bad Dudes & YM3812 information!
  34.     Thanks to JC Alexander for fix to Robocop ending!
  35.  
  36. ***************************************************************************/
  37.  
  38. #include "driver.h"
  39. #include "vidhrdw/generic.h"
  40. #include "cpu/m6502/m6502.h"
  41. #include "cpu/h6280/h6280.h"
  42.  
  43. /* Video emulation definitions */
  44. int  dec0_vh_start(void);
  45. void dec0_vh_stop(void);
  46. int  dec0_nodma_vh_start(void);
  47. void dec0_nodma_vh_stop(void);
  48. void hbarrel_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  49. void baddudes_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  50. void birdtry_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  51. void robocop_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  52. void hippodrm_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  53. void slyspy_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  54. void midres_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  55.  
  56. extern unsigned char *dec0_pf1_rowscroll,*dec0_pf2_rowscroll,*dec0_pf3_rowscroll;
  57. extern unsigned char *dec0_pf1_colscroll,*dec0_pf2_colscroll,*dec0_pf3_colscroll;
  58. extern unsigned char *dec0_pf1_data,*dec0_pf2_data,*dec0_pf3_data;
  59.  
  60. WRITE_HANDLER( dec0_pf1_control_0_w );
  61. WRITE_HANDLER( dec0_pf1_control_1_w );
  62. WRITE_HANDLER( dec0_pf1_rowscroll_w );
  63. WRITE_HANDLER( dec0_pf1_colscroll_w );
  64. WRITE_HANDLER( dec0_pf1_data_w );
  65. READ_HANDLER( dec0_pf1_data_r );
  66. WRITE_HANDLER( dec0_pf2_control_0_w );
  67. WRITE_HANDLER( dec0_pf2_control_1_w );
  68. WRITE_HANDLER( dec0_pf2_rowscroll_w );
  69. WRITE_HANDLER( dec0_pf2_colscroll_w );
  70. WRITE_HANDLER( dec0_pf2_data_w );
  71. READ_HANDLER( dec0_pf2_data_r );
  72. WRITE_HANDLER( dec0_pf3_control_0_w );
  73. WRITE_HANDLER( dec0_pf3_control_1_w );
  74. WRITE_HANDLER( dec0_pf3_rowscroll_w );
  75. WRITE_HANDLER( dec0_pf3_colscroll_w );
  76. READ_HANDLER( dec0_pf3_colscroll_r );
  77. WRITE_HANDLER( dec0_pf3_data_w );
  78. READ_HANDLER( dec0_pf3_data_r );
  79. WRITE_HANDLER( dec0_priority_w );
  80. WRITE_HANDLER( dec0_update_sprites_w );
  81.  
  82. WRITE_HANDLER( dec0_paletteram_rg_w );
  83. WRITE_HANDLER( dec0_paletteram_b_w );
  84.  
  85. READ_HANDLER( dec0_pf3_data_8bit_r );
  86. WRITE_HANDLER( dec0_pf3_data_8bit_w );
  87. WRITE_HANDLER( dec0_pf3_control_8bit_w );
  88.  
  89. /* System prototypes - from machine/dec0.c */
  90. extern void dec0_custom_memory(void);
  91. READ_HANDLER( dec0_controls_r );
  92. READ_HANDLER( dec0_rotary_r );
  93. READ_HANDLER( midres_controls_r );
  94. READ_HANDLER( slyspy_controls_r );
  95. READ_HANDLER( slyspy_protection_r );
  96. WRITE_HANDLER( slyspy_state_w );
  97. READ_HANDLER( slyspy_state_r );
  98. WRITE_HANDLER( slyspy_240000_w );
  99. WRITE_HANDLER( slyspy_242000_w );
  100. WRITE_HANDLER( slyspy_246000_w );
  101. WRITE_HANDLER( slyspy_248000_w );
  102. WRITE_HANDLER( slyspy_24c000_w );
  103. WRITE_HANDLER( slyspy_24e000_w );
  104.  
  105. extern void dec0_i8751_write(int data);
  106. extern void dec0_i8751_reset(void);
  107. READ_HANDLER( hippodrm_prot_r );
  108. WRITE_HANDLER( hippodrm_prot_w );
  109. READ_HANDLER( hippodrm_shared_r );
  110. WRITE_HANDLER( hippodrm_shared_w );
  111.  
  112. unsigned char *dec0_ram;
  113.  
  114. /******************************************************************************/
  115.  
  116. static WRITE_HANDLER( dec0_control_w )
  117. {
  118.     switch (offset)
  119.     {
  120.         case 0: /* Playfield & Sprite priority */
  121.             dec0_priority_w(0,data);
  122.             break;
  123.  
  124.         case 2: /* DMA flag */
  125.             dec0_update_sprites_w(0,0);
  126.             break;
  127.  
  128.         case 4: /* 6502 sound cpu */
  129.             soundlatch_w(0,data & 0xff);
  130.             cpu_cause_interrupt(1,M6502_INT_NMI);
  131.             break;
  132.  
  133.         case 6: /* Intel 8751 microcontroller - Bad Dudes, Heavy Barrel, Birdy Try only */
  134.             dec0_i8751_write(data);
  135.             break;
  136.  
  137.         case 8: /* Interrupt ack (VBL - IRQ 6) */
  138.             break;
  139.  
  140.         case 0xa: /* ? */
  141.              logerror("CPU #0 PC %06x: warning - write %02x to unmapped memory address %06x\n",cpu_get_pc(),data,0x30c010+offset);
  142.             break;
  143.  
  144.         case 0xe: /* Reset Intel 8751? - not sure, all the games write here at startup */
  145.             dec0_i8751_reset();
  146.              logerror("CPU #0 PC %06x: warning - write %02x to unmapped memory address %06x\n",cpu_get_pc(),data,0x30c010+offset);
  147.             break;
  148.  
  149.         default:
  150.             logerror("CPU #0 PC %06x: warning - write %02x to unmapped memory address %06x\n",cpu_get_pc(),data,0x30c010+offset);
  151.             break;
  152.     }
  153. }
  154.  
  155. static WRITE_HANDLER( slyspy_control_w )
  156. {
  157.     switch (offset) {
  158.         case 0:
  159.             soundlatch_w(0,data & 0xff);
  160.             cpu_cause_interrupt(1,H6280_INT_NMI);
  161.             break;
  162.         case 2:
  163.             dec0_priority_w(0,data);
  164.             break;
  165.     }
  166. }
  167.  
  168. static WRITE_HANDLER( midres_sound_w )
  169. {
  170.     soundlatch_w(0,data & 0xff);
  171.     cpu_cause_interrupt(1,H6280_INT_NMI);
  172. }
  173.  
  174. /******************************************************************************/
  175.  
  176. static struct MemoryReadAddress dec0_readmem[] =
  177. {
  178.     { 0x000000, 0x05ffff, MRA_ROM },
  179.     { 0x242800, 0x243fff, MRA_BANK3 }, /* Robocop only */
  180.     { 0x244000, 0x245fff, dec0_pf1_data_r },
  181.     { 0x24a000, 0x24a7ff, dec0_pf2_data_r },
  182.     { 0x24c800, 0x24c87f, dec0_pf3_colscroll_r },
  183.     { 0x24d000, 0x24d7ff, dec0_pf3_data_r },
  184.     { 0x300000, 0x30001f, dec0_rotary_r },
  185.     { 0x30c000, 0x30c00b, dec0_controls_r },
  186.     { 0x310000, 0x3107ff, paletteram_word_r },
  187.     { 0x314000, 0x3147ff, paletteram_2_word_r },
  188.     { 0xff8000, 0xffbfff, MRA_BANK1 }, /* Main ram */
  189.     { 0xffc000, 0xffc7ff, MRA_BANK2 }, /* Sprites */
  190.     { -1 }  /* end of table */
  191. };
  192.  
  193. static struct MemoryWriteAddress dec0_writemem[] =
  194. {
  195.     { 0x000000, 0x05ffff, MWA_ROM },
  196.  
  197.     { 0x240000, 0x240007, dec0_pf1_control_0_w },    /* text layer */
  198.     { 0x240010, 0x240017, dec0_pf1_control_1_w },
  199.      { 0x242000, 0x24207f, dec0_pf1_colscroll_w, &dec0_pf1_colscroll },
  200.     { 0x242400, 0x2427ff, dec0_pf1_rowscroll_w, &dec0_pf1_rowscroll },
  201.     { 0x242800, 0x243fff, MWA_BANK3 }, /* Robocop only */
  202.     { 0x244000, 0x245fff, dec0_pf1_data_w, &dec0_pf1_data },
  203.  
  204.     { 0x246000, 0x246007, dec0_pf2_control_0_w },    /* first tile layer */
  205.     { 0x246010, 0x246017, dec0_pf2_control_1_w },
  206.     { 0x248000, 0x24807f, dec0_pf2_colscroll_w, &dec0_pf2_colscroll },
  207.     { 0x248400, 0x2487ff, dec0_pf2_rowscroll_w, &dec0_pf2_rowscroll },
  208.     { 0x24a000, 0x24a7ff, dec0_pf2_data_w, &dec0_pf2_data },
  209.  
  210.     { 0x24c000, 0x24c007, dec0_pf3_control_0_w },    /* second tile layer */
  211.     { 0x24c010, 0x24c017, dec0_pf3_control_1_w },
  212.     { 0x24c800, 0x24c87f, dec0_pf3_colscroll_w, &dec0_pf3_colscroll },
  213.     { 0x24cc00, 0x24cfff, dec0_pf3_rowscroll_w, &dec0_pf3_rowscroll },
  214.     { 0x24d000, 0x24d7ff, dec0_pf3_data_w, &dec0_pf3_data },
  215.  
  216.     { 0x30c010, 0x30c01f, dec0_control_w },    /* Priority, sound, etc. */
  217.     { 0x310000, 0x3107ff, dec0_paletteram_rg_w, &paletteram },    /* Red & Green bits */
  218.     { 0x314000, 0x3147ff, dec0_paletteram_b_w, &paletteram_2 },    /* Blue bits */
  219.     { 0xff8000, 0xffbfff, MWA_BANK1, &dec0_ram },
  220.     { 0xffc000, 0xffc7ff, MWA_BANK2, &spriteram },
  221.     { -1 }  /* end of table */
  222. };
  223.  
  224. static struct MemoryReadAddress robocop_sub_readmem[] =
  225. {
  226.     { 0x000000, 0x00ffff, MRA_ROM },
  227.     { 0x1f0000, 0x1f1fff, MRA_BANK8 }, /* Main ram */
  228.     { -1 }  /* end of table */
  229. };
  230.  
  231. static struct MemoryWriteAddress robocop_sub_writemem[] =
  232. {
  233.     { 0x000000, 0x00ffff, MWA_ROM },
  234.     { 0x1f0000, 0x1f1fff, MWA_BANK8 }, /* Main ram */
  235.     { -1 }  /* end of table */
  236. };
  237.  
  238. static struct MemoryReadAddress hippodrm_sub_readmem[] =
  239. {
  240.     { 0x000000, 0x00ffff, MRA_ROM },
  241.     { 0x180000, 0x1800ff, hippodrm_shared_r },
  242.     { 0x1a1000, 0x1a17ff, dec0_pf3_data_8bit_r },
  243.     { 0x1d0000, 0x1d00ff, hippodrm_prot_r },
  244.     { 0x1f0000, 0x1f1fff, MRA_BANK8 }, /* Main ram */
  245.     { 0x1ff402, 0x1ff403, input_port_5_r }, /* VBL */
  246.     { -1 }  /* end of table */
  247. };
  248.  
  249. static struct MemoryWriteAddress hippodrm_sub_writemem[] =
  250. {
  251.     { 0x000000, 0x00ffff, MWA_ROM },
  252.     { 0x180000, 0x1800ff, hippodrm_shared_w },
  253.     { 0x1a0000, 0x1a001f, dec0_pf3_control_8bit_w },
  254.     { 0x1a1000, 0x1a17ff, dec0_pf3_data_8bit_w },
  255.     { 0x1d0000, 0x1d00ff, hippodrm_prot_w },
  256.     { 0x1f0000, 0x1f1fff, MWA_BANK8 }, /* Main ram */
  257.     { 0x1ff402, 0x1ff403, H6280_irq_status_w },
  258.     { -1 }  /* end of table */
  259. };
  260.  
  261. static struct MemoryReadAddress slyspy_readmem[] =
  262. {
  263.     { 0x000000, 0x05ffff, MRA_ROM },
  264.     { 0x244000, 0x244001, slyspy_state_r }, /* protection */
  265.     { 0x304000, 0x307fff, MRA_BANK1 }, /* Sly spy main ram */
  266.     { 0x308000, 0x3087ff, MRA_BANK2 }, /* Sprites */
  267.     { 0x310000, 0x3107ff, paletteram_word_r },
  268.     { 0x314008, 0x31400f, slyspy_controls_r },
  269.     { 0x31c000, 0x31c00f, slyspy_protection_r },
  270.     { -1 }  /* end of table */
  271. };
  272.  
  273. static struct MemoryWriteAddress slyspy_writemem[] =
  274. {
  275.     { 0x000000, 0x05ffff, MWA_ROM },
  276.  
  277.     /* These locations aren't real!  They are just there so memory is allocated */
  278.     { 0x232000, 0x23207f, MWA_NOP, &dec0_pf2_colscroll },
  279.     { 0x232400, 0x2327ff, MWA_NOP, &dec0_pf2_rowscroll },
  280.     { 0x23c000, 0x23c07f, MWA_NOP, &dec0_pf1_colscroll },
  281.     { 0x23c400, 0x23c7ff, MWA_NOP, &dec0_pf1_rowscroll },
  282.     { 0x200000, 0x2007ff, MWA_NOP, &dec0_pf2_data },
  283.     { 0x202000, 0x203fff, MWA_NOP, &dec0_pf1_data },
  284.  
  285.     { 0x244000, 0x244001, MWA_NOP }, /* Extra protection? */
  286.  
  287.     /* The location of p1 & pf2 can change between these according to protection */
  288.     { 0x240000, 0x241fff, slyspy_240000_w },
  289.     { 0x242000, 0x243fff, slyspy_242000_w },
  290.     { 0x246000, 0x247fff, slyspy_246000_w },
  291.     { 0x248000, 0x249fff, slyspy_248000_w },
  292.     { 0x24c000, 0x24dfff, slyspy_24c000_w },
  293.     { 0x24e000, 0x24ffff, slyspy_24e000_w },
  294.  
  295.     { 0x24a000, 0x24a001, slyspy_state_w }, /* Protection */
  296.  
  297.     /* Pf3 is unaffected by protection */
  298.     { 0x300000, 0x300007, dec0_pf3_control_0_w },
  299.     { 0x300010, 0x300017, dec0_pf3_control_1_w },
  300.     { 0x300800, 0x30087f, dec0_pf3_colscroll_w, &dec0_pf3_colscroll },
  301.     { 0x300c00, 0x300fff, dec0_pf3_rowscroll_w, &dec0_pf3_rowscroll },
  302.     { 0x301000, 0x3017ff, dec0_pf3_data_w, &dec0_pf3_data },
  303.  
  304.     { 0x304000, 0x307fff, MWA_BANK1, &dec0_ram }, /* Sly spy main ram */
  305.     { 0x308000, 0x3087ff, MWA_BANK2, &spriteram },
  306.     { 0x310000, 0x3107ff, paletteram_xxxxBBBBGGGGRRRR_word_w, &paletteram },
  307.     { 0x314000, 0x314003, slyspy_control_w },
  308.     { 0x31c000, 0x31c00f, MWA_NOP },
  309.     { -1 }  /* end of table */
  310. };
  311.  
  312. static struct MemoryReadAddress midres_readmem[] =
  313. {
  314.     { 0x000000, 0x07ffff, MRA_ROM },
  315.     { 0x100000, 0x103fff, MRA_BANK1 },
  316.     { 0x120000, 0x1207ff, MRA_BANK2 },
  317.     { 0x180000, 0x18000f, midres_controls_r },
  318.     { 0x320000, 0x321fff, dec0_pf1_data_r },
  319.     { -1 }  /* end of table */
  320. };
  321.  
  322. static struct MemoryWriteAddress midres_writemem[] =
  323. {
  324.     { 0x000000, 0x07ffff, MWA_ROM },
  325.     { 0x100000, 0x103fff, MWA_BANK1, &dec0_ram },
  326.     { 0x120000, 0x1207ff, MWA_BANK2, &spriteram },
  327.     { 0x140000, 0x1407ff, paletteram_xxxxBBBBGGGGRRRR_word_w, &paletteram },
  328.     { 0x160000, 0x160001, dec0_priority_w },
  329.     { 0x180008, 0x18000f, MWA_NOP }, /* ?? watchdog ?? */
  330.     { 0x1a0000, 0x1a0001, midres_sound_w },
  331.  
  332.     { 0x200000, 0x200007, dec0_pf2_control_0_w },
  333.     { 0x200010, 0x200017, dec0_pf2_control_1_w },
  334.     { 0x220000, 0x2207ff, dec0_pf2_data_w, &dec0_pf2_data },
  335.     { 0x220800, 0x220fff, dec0_pf2_data_w },    /* mirror address used in end sequence */
  336.     { 0x240000, 0x24007f, dec0_pf2_colscroll_w, &dec0_pf2_colscroll },
  337.     { 0x240400, 0x2407ff, dec0_pf2_rowscroll_w, &dec0_pf2_rowscroll },
  338.  
  339.     { 0x280000, 0x280007, dec0_pf3_control_0_w },
  340.     { 0x280010, 0x280017, dec0_pf3_control_1_w },
  341.     { 0x2a0000, 0x2a07ff, dec0_pf3_data_w, &dec0_pf3_data },
  342.     { 0x2c0000, 0x2c007f, dec0_pf3_colscroll_w, &dec0_pf3_colscroll },
  343.     { 0x2c0400, 0x2c07ff, dec0_pf3_rowscroll_w, &dec0_pf3_rowscroll },
  344.  
  345.     { 0x300000, 0x300007, dec0_pf1_control_0_w },
  346.     { 0x300010, 0x300017, dec0_pf1_control_1_w },
  347.     { 0x320000, 0x321fff, dec0_pf1_data_w, &dec0_pf1_data },
  348.     { 0x340000, 0x34007f, dec0_pf1_colscroll_w, &dec0_pf1_colscroll },
  349.     { 0x340400, 0x3407ff, dec0_pf1_rowscroll_w, &dec0_pf1_rowscroll },
  350.     { -1 }  /* end of table */
  351. };
  352.  
  353. /******************************************************************************/
  354.  
  355. static WRITE_HANDLER( YM3812_w )
  356. {
  357.     switch (offset) {
  358.     case 0:
  359.         YM3812_control_port_0_w(0,data);
  360.         break;
  361.     case 1:
  362.         YM3812_write_port_0_w(0,data);
  363.         break;
  364.     }
  365. }
  366.  
  367. static WRITE_HANDLER( YM2203_w )
  368. {
  369.     switch (offset) {
  370.     case 0:
  371.         YM2203_control_port_0_w(0,data);
  372.         break;
  373.     case 1:
  374.         YM2203_write_port_0_w(0,data);
  375.         break;
  376.     }
  377. }
  378.  
  379. static struct MemoryReadAddress dec0_s_readmem[] =
  380. {
  381.     { 0x0000, 0x05ff, MRA_RAM },
  382.     { 0x3000, 0x3000, soundlatch_r },
  383.     { 0x3800, 0x3800, OKIM6295_status_0_r },
  384.     { 0x8000, 0xffff, MRA_ROM },
  385.     { -1 }  /* end of table */
  386. };
  387.  
  388. static struct MemoryWriteAddress dec0_s_writemem[] =
  389. {
  390.     { 0x0000, 0x05ff, MWA_RAM },
  391.     { 0x0800, 0x0801, YM2203_w },
  392.     { 0x1000, 0x1001, YM3812_w },
  393.     { 0x3800, 0x3800, OKIM6295_data_0_w },
  394.     { 0x8000, 0xffff, MWA_ROM },
  395.     { -1 }  /* end of table */
  396. };
  397.  
  398. /* Physical memory map (21 bits) */
  399. static struct MemoryReadAddress slyspy_s_readmem[] =
  400. {
  401.     { 0x000000, 0x00ffff, MRA_ROM },
  402.     { 0x0a0000, 0x0a0001, MRA_NOP }, /* Protection counter */
  403.     { 0x0e0000, 0x0e0001, OKIM6295_status_0_r },
  404.     { 0x0f0000, 0x0f0001, soundlatch_r },
  405.     { 0x1f0000, 0x1f1fff, MRA_BANK8 },
  406.     { -1 }  /* end of table */
  407. };
  408.  
  409. static struct MemoryWriteAddress slyspy_s_writemem[] =
  410. {
  411.     { 0x000000, 0x00ffff, MWA_ROM },
  412.     { 0x090000, 0x090001, YM3812_w },
  413.     { 0x0b0000, 0x0b0001, YM2203_w},
  414.     { 0x0e0000, 0x0e0001, OKIM6295_data_0_w },
  415.     { 0x1f0000, 0x1f1fff, MWA_BANK8 }, /* Main ram */
  416.     { 0x1ff402, 0x1ff403, H6280_irq_status_w },
  417.     { -1 }  /* end of table */
  418. };
  419.  
  420. static struct MemoryReadAddress midres_s_readmem[] =
  421. {
  422.     { 0x000000, 0x00ffff, MRA_ROM },
  423.     { 0x130000, 0x130001, OKIM6295_status_0_r },
  424.     { 0x138000, 0x138001, soundlatch_r },
  425.     { 0x1f0000, 0x1f1fff, MRA_BANK8 },
  426.     { -1 }  /* end of table */
  427. };
  428.  
  429. static struct MemoryWriteAddress midres_s_writemem[] =
  430. {
  431.     { 0x000000, 0x00ffff, MWA_ROM },
  432.     { 0x108000, 0x108001, YM3812_w },
  433.     { 0x118000, 0x118001, YM2203_w },
  434.     { 0x130000, 0x130001, OKIM6295_data_0_w },
  435.     { 0x1f0000, 0x1f1fff, MWA_BANK8 }, /* Main ram */
  436.     { 0x1ff402, 0x1ff403, H6280_irq_status_w },
  437.     { -1 }  /* end of table */
  438. };
  439.  
  440. /******************************************************************************/
  441.  
  442. #define DEC0_PLAYER1_CONTROL \
  443.     PORT_START /* Player 1 controls */ \
  444.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY ) \
  445.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY ) \
  446.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY ) \
  447.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY ) \
  448.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) \
  449.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) \
  450.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) /* Button 3 - unused */ \
  451.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) /* Button 4 - unused */
  452.  
  453. #define DEC0_PLAYER2_CONTROL \
  454.     PORT_START /* Player 2 controls */ \
  455.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL ) \
  456.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL ) \
  457.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL ) \
  458.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL ) \
  459.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL ) \
  460.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_COCKTAIL ) \
  461.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) /* Button 3 - unused */ \
  462.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) /* Button 4 - unused */
  463.  
  464. #define DEC0_MACHINE_CONTROL \
  465.     PORT_START /* Credits, start buttons */ \
  466.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) /* PL1 Button 5 - unused */ \
  467.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) /* PL2 Button 5 - unused */ \
  468.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 ) \
  469.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 ) \
  470.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 ) \
  471.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) \
  472.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 ) \
  473.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK )
  474.  
  475. #define DEC0_COIN_SETTING \
  476.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) \
  477.     PORT_DIPSETTING(    0x00, DEF_STR( 3C_1C ) ) \
  478.     PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) ) \
  479.     PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) ) \
  480.     PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) ) \
  481.     PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) \
  482.     PORT_DIPSETTING(    0x00, DEF_STR( 3C_1C ) ) \
  483.     PORT_DIPSETTING(    0x04, DEF_STR( 2C_1C ) ) \
  484.     PORT_DIPSETTING(    0x0c, DEF_STR( 1C_1C ) ) \
  485.     PORT_DIPSETTING(    0x08, DEF_STR( 1C_2C ) ) \
  486.  
  487. INPUT_PORTS_START( hbarrel )
  488.     DEC0_PLAYER1_CONTROL
  489.     DEC0_PLAYER2_CONTROL
  490.     DEC0_MACHINE_CONTROL
  491.  
  492.     PORT_START    /* Dip switch bank 1 */
  493.     DEC0_COIN_SETTING
  494.     PORT_SERVICE( 0x10, IP_ACTIVE_LOW )
  495.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) )
  496.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  497.     PORT_DIPSETTING(    0x20, DEF_STR( On ) )
  498.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) )
  499.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  500.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  501.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
  502.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  503.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  504.  
  505.     PORT_START    /* Dip switch bank 2 */
  506.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
  507.     PORT_DIPSETTING(    0x01, "1" )
  508.     PORT_DIPSETTING(    0x03, "3" )
  509.     PORT_DIPSETTING(    0x02, "5" )
  510.     PORT_BITX( 0,       0x00, IPT_DIPSWITCH_SETTING | IPF_CHEAT, "Infinite", IP_KEY_NONE, IP_JOY_NONE )
  511.     PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
  512.     PORT_DIPSETTING(    0x0c, "Easy" )
  513.     PORT_DIPSETTING(    0x04, "Normal" )
  514.     PORT_DIPSETTING(    0x08, "Hard" )
  515.     PORT_DIPSETTING(    0x00, "Hardest" )
  516.     PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) )
  517.     PORT_DIPSETTING(    0x30, "30k 80k 160k" )
  518.     PORT_DIPSETTING(    0x10, "50k 120k 190k" )
  519.     PORT_DIPSETTING(    0x20, "100k 200k 300k" )
  520.     PORT_DIPSETTING(    0x00, "150k 300k 450k" )
  521.     PORT_DIPNAME( 0x40, 0x00, "Allow Continue" )
  522.     PORT_DIPSETTING(    0x40, DEF_STR( No ) )
  523.     PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
  524.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
  525.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  526.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  527.  
  528.     PORT_START    /* player 1 12-way rotary control - converted in controls_r() */
  529.     PORT_ANALOGX( 0xff, 0x00, IPT_DIAL | IPF_REVERSE, 25, 10, 0, 0, KEYCODE_Z, KEYCODE_X, 0, 0 )
  530.  
  531.     PORT_START    /* player 2 12-way rotary control - converted in controls_r() */
  532.     PORT_ANALOGX( 0xff, 0x00, IPT_DIAL | IPF_REVERSE | IPF_PLAYER2, 25, 10, 0, 0, KEYCODE_N, KEYCODE_M, 0, 0 )
  533. INPUT_PORTS_END
  534.  
  535. INPUT_PORTS_START( baddudes )
  536.     DEC0_PLAYER1_CONTROL
  537.     DEC0_PLAYER2_CONTROL
  538.     DEC0_MACHINE_CONTROL
  539.  
  540.     PORT_START    /* DSW0 */
  541.     DEC0_COIN_SETTING
  542.     PORT_SERVICE( 0x10, IP_ACTIVE_LOW )
  543.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) )
  544.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  545.     PORT_DIPSETTING(    0x20, DEF_STR( On ) )
  546.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) )
  547.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  548.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  549.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
  550.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  551.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  552.  
  553.     PORT_START    /* Dip switch bank 2 */
  554.     PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) )
  555.     PORT_DIPSETTING(    0x01, "1" )
  556.     PORT_DIPSETTING(    0x03, "2" )
  557.     PORT_DIPSETTING(    0x02, "3" )
  558.     PORT_BITX( 0,       0x00, IPT_DIPSWITCH_SETTING | IPF_CHEAT, "Infinite", IP_KEY_NONE, IP_JOY_NONE )
  559.     PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
  560.     PORT_DIPSETTING(    0x04, "Easy" )
  561.     PORT_DIPSETTING(    0x0c, "Normal" )
  562.     PORT_DIPSETTING(    0x08, "Hard" )
  563.     PORT_DIPSETTING(    0x00, "Hardest" )
  564.     PORT_DIPNAME( 0x10, 0x10, "Allow Continue" )
  565.     PORT_DIPSETTING(    0x00, DEF_STR( No ) )
  566.     PORT_DIPSETTING(    0x10, DEF_STR( Yes ) )
  567.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) )
  568.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  569.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  570.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) )
  571.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  572.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  573.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
  574.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  575.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  576.  
  577.     PORT_START    /* player 1 12-way rotary control - converted in controls_r() */
  578.     PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* unused */
  579.  
  580.     PORT_START    /* player 2 12-way rotary control - converted in controls_r() */
  581.     PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* unused */
  582. INPUT_PORTS_END
  583.  
  584. INPUT_PORTS_START( robocop )
  585.     DEC0_PLAYER1_CONTROL
  586.     DEC0_PLAYER2_CONTROL
  587.     DEC0_MACHINE_CONTROL
  588.  
  589.     PORT_START    /* DSW0 */
  590.     DEC0_COIN_SETTING
  591.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) )
  592.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  593.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  594.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) )
  595.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  596.     PORT_DIPSETTING(    0x20, DEF_STR( On ) )
  597.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) )
  598.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  599.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  600.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) )
  601.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  602.     PORT_DIPSETTING(    0x80, DEF_STR( Cocktail ) )
  603.  
  604.     PORT_START    /* Dip switch bank 2 */
  605.     PORT_DIPNAME( 0x03, 0x03, "Player Energy" )
  606.     PORT_DIPSETTING(    0x01, "Low" )
  607.     PORT_DIPSETTING(    0x03, "Medium" )
  608.     PORT_DIPSETTING(    0x02, "High" )
  609.     PORT_DIPSETTING(    0x00, "Very High" )
  610.     PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
  611.     PORT_DIPSETTING(    0x0c, "Easy" )
  612.     PORT_DIPSETTING(    0x04, "Normal" )
  613.     PORT_DIPSETTING(    0x08, "Hard" )
  614.     PORT_DIPSETTING(    0x00, "Hardest" )
  615.     PORT_DIPNAME( 0x10, 0x10, "Allow Continue" )
  616.     PORT_DIPSETTING(    0x00, DEF_STR( No ) )
  617.     PORT_DIPSETTING(    0x10, DEF_STR( Yes ) )
  618.     PORT_DIPNAME( 0x20, 0x20, "Bonus Stage Energy" )
  619.     PORT_DIPSETTING(    0x00, "Low" )
  620.     PORT_DIPSETTING(    0x20, "High" )
  621.     PORT_DIPNAME( 0x40, 0x40, "Brink Time" )
  622.     PORT_DIPSETTING(    0x40, "Normal" )
  623.     PORT_DIPSETTING(    0x00, "Less" )
  624.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
  625.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  626.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  627. INPUT_PORTS_END
  628.  
  629. INPUT_PORTS_START( hippodrm )
  630.     DEC0_PLAYER1_CONTROL
  631.     DEC0_PLAYER2_CONTROL
  632.     DEC0_MACHINE_CONTROL
  633.  
  634.     PORT_START    /* Dip switch bank 1 */
  635.     DEC0_COIN_SETTING
  636.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) )
  637.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  638.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  639.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) )
  640.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  641.     PORT_DIPSETTING(    0x20, DEF_STR( On ) )
  642.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) )
  643.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  644.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  645.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
  646.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  647.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  648.  
  649.     PORT_START    /* Dip switch bank 2 */
  650.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
  651.     PORT_DIPSETTING(    0x01, "1" )
  652.     PORT_DIPSETTING(    0x03, "2" )
  653.     PORT_DIPSETTING(    0x02, "3" )
  654.     PORT_DIPSETTING(    0x00, "5" )
  655.     PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
  656.     PORT_DIPSETTING(    0x08, "Easy" )
  657.     PORT_DIPSETTING(    0x0c, "Normal" )
  658.     PORT_DIPSETTING(    0x04, "Difficult" )
  659.     PORT_DIPSETTING(    0x00, "Very Difficult" )
  660.     PORT_DIPNAME( 0x30, 0x30, "Player & Enemy Energy" )
  661.     PORT_DIPSETTING(    0x10, "Low" )
  662.     PORT_DIPSETTING(    0x20, "Medium" )
  663.     PORT_DIPSETTING(    0x30, "High" )
  664.     PORT_DIPSETTING(    0x00, "Very High" )
  665.     PORT_DIPNAME( 0x40, 0x40, "Enemy Power on Continue" )
  666.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  667.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  668.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
  669.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  670.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  671.  
  672.     PORT_START
  673.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_VBLANK )
  674. INPUT_PORTS_END
  675.  
  676. #define DEC1_PLAYER1_CONTROL \
  677.     PORT_START /* Player 1 controls */ \
  678.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY ) \
  679.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY ) \
  680.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY ) \
  681.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY ) \
  682.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) \
  683.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) \
  684.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) /* button 3 - unused */ \
  685.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
  686.  
  687. #define DEC1_PLAYER2_CONTROL \
  688.     PORT_START /* Player 2 controls */ \
  689.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL ) \
  690.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL ) \
  691.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL ) \
  692.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL ) \
  693.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL ) \
  694.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_COCKTAIL ) \
  695.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) /* button 3 - unused */ \
  696.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
  697.  
  698.  
  699. INPUT_PORTS_START( slyspy )
  700.     DEC1_PLAYER1_CONTROL
  701.     DEC1_PLAYER2_CONTROL
  702.  
  703.     PORT_START    /* Credits, start buttons */
  704.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
  705.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
  706.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
  707.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_VBLANK )    /* screwed up colors with ACTIVE_LOW */
  708.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  709.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
  710.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  711.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  712.  
  713.     PORT_START    /* Dip switch bank 1 */
  714.     DEC0_COIN_SETTING
  715.     PORT_SERVICE( 0x10, IP_ACTIVE_LOW )
  716.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) )
  717.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  718.     PORT_DIPSETTING(    0x20, DEF_STR( On ) )
  719.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) )
  720.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  721.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  722.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) )
  723.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  724.     PORT_DIPSETTING(    0x80, DEF_STR( Cocktail ) )
  725.  
  726.     PORT_START    /* Dip switch bank 2 */
  727.     PORT_DIPNAME( 0x03, 0x03, "Energy" )
  728.     PORT_DIPSETTING(    0x01, "Low" )
  729.     PORT_DIPSETTING(    0x03, "Medium" )
  730.     PORT_DIPSETTING(    0x02, "High" )
  731.     PORT_DIPSETTING(    0x00, "Very High" )
  732.     PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
  733.     PORT_DIPSETTING(    0x04, "Easy" )
  734.     PORT_DIPSETTING(    0x0c, "Normal" )
  735.     PORT_DIPSETTING(    0x08, "Hard" )
  736.     PORT_DIPSETTING(    0x00, "Hardest" )
  737.     PORT_DIPNAME( 0x10, 0x10, "Allow Continue" )
  738.     PORT_DIPSETTING(    0x00, DEF_STR( No ) )
  739.     PORT_DIPSETTING(    0x10, DEF_STR( Yes ) )
  740.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) )
  741.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  742.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  743.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) )
  744.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  745.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  746.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
  747.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  748.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  749. INPUT_PORTS_END
  750.  
  751. INPUT_PORTS_START( midres )
  752.     DEC1_PLAYER1_CONTROL
  753.     DEC1_PLAYER2_CONTROL
  754.  
  755.     PORT_START    /* Credits */
  756.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
  757.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
  758.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
  759.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_VBLANK )
  760.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  761.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
  762.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  763.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  764.  
  765.     PORT_START    /* Dip switch bank 1 */
  766.     DEC0_COIN_SETTING
  767.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
  768.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  769.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  770.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) )
  771.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  772.     PORT_DIPSETTING(    0x20, DEF_STR( On ) )
  773.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) )
  774.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  775.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  776.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
  777.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  778.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  779.  
  780.     PORT_START    /* Dip switch bank 2 */
  781.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
  782.     PORT_DIPSETTING(    0x01, "1" )
  783.     PORT_DIPSETTING(    0x03, "3" )
  784.     PORT_DIPSETTING(    0x02, "5" )
  785.     PORT_BITX( 0,       0x00, IPT_DIPSWITCH_SETTING | IPF_CHEAT, "Infinite", IP_KEY_NONE, IP_JOY_NONE )
  786.     PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
  787.     PORT_DIPSETTING(    0x04, "Easy" )
  788.     PORT_DIPSETTING(    0x0c, "Normal" )
  789.     PORT_DIPSETTING(    0x08, "Hard" )
  790.     PORT_DIPSETTING(    0x00, "Hardest" )
  791.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
  792.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  793.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  794.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
  795.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  796.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  797.     PORT_DIPNAME( 0x40, 0x00, "Allow Continue" )
  798.     PORT_DIPSETTING(    0x40, DEF_STR( No ) )
  799.     PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
  800.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
  801.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  802.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  803.  
  804.     PORT_START    /* player 1 12-way rotary control - converted in controls_r() */
  805.     PORT_ANALOGX( 0xff, 0x00, IPT_DIAL | IPF_REVERSE, 25, 10, 0, 0, KEYCODE_Z, KEYCODE_X, 0, 0 )
  806.  
  807.     PORT_START    /* player 2 12-way rotary control - converted in controls_r() */
  808.     PORT_ANALOGX( 0xff, 0x00, IPT_DIAL | IPF_REVERSE | IPF_PLAYER2, 25, 10, 0, 0, KEYCODE_N, KEYCODE_M, 0, 0 )
  809. INPUT_PORTS_END
  810.  
  811. INPUT_PORTS_START( bouldash )
  812.     DEC1_PLAYER1_CONTROL
  813.     DEC1_PLAYER2_CONTROL
  814.  
  815.     PORT_START    /* Credits, start buttons */
  816.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
  817.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
  818.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
  819.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_VBLANK )
  820.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  821.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
  822.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  823.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  824.  
  825.     PORT_START    /* Dip switch bank 1 */
  826.     DEC0_COIN_SETTING
  827.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) )
  828.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  829.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  830.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) )
  831.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  832.     PORT_DIPSETTING(    0x20, DEF_STR( On ) )
  833.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) )
  834.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  835.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  836.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) )
  837.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  838.     PORT_DIPSETTING(    0x80, DEF_STR( Cocktail ) )
  839.  
  840.     PORT_START    /* Dip switch bank 2 */
  841.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
  842.     PORT_DIPSETTING(    0x00, "2" )
  843.     PORT_DIPSETTING(    0x03, "3" )
  844.     PORT_DIPSETTING(    0x02, "4" )
  845.     PORT_DIPSETTING(    0x01, "5" )
  846.     PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
  847.     PORT_DIPSETTING(    0x08, "Easy" )
  848.     PORT_DIPSETTING(    0x04, "Medium" )
  849.     PORT_DIPSETTING(    0x0c, "Hard" )
  850.     PORT_DIPSETTING(    0x00, "Hardest" )
  851.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
  852.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  853.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  854.     PORT_DIPNAME( 0x20, 0x20, "Game" )
  855.     PORT_DIPSETTING(    0x20, "Part 1" )
  856.     PORT_DIPSETTING(    0x00, "Part 2" )
  857.     PORT_DIPNAME( 0x40, 0x40, "Allow Continue" )
  858.     PORT_DIPSETTING(    0x00, DEF_STR( No ) )
  859.     PORT_DIPSETTING(    0x40, DEF_STR( Yes ) )
  860.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
  861.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  862.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  863. INPUT_PORTS_END
  864.  
  865. /******************************************************************************/
  866.  
  867. static struct GfxLayout charlayout =
  868. {
  869.     8,8,    /* 8*8 chars */
  870.     RGN_FRAC(1,4),
  871.     4,        /* 4 bits per pixel  */
  872.     { RGN_FRAC(0,4), RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(3,4) },
  873.     { 0, 1, 2, 3, 4, 5, 6, 7 },
  874.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
  875.     8*8    /* every char takes 8 consecutive bytes */
  876. };
  877.  
  878. static struct GfxLayout tilelayout =
  879. {
  880.     16,16,
  881.     RGN_FRAC(1,4),
  882.     4,
  883.     { RGN_FRAC(1,4), RGN_FRAC(3,4), RGN_FRAC(0,4), RGN_FRAC(2,4) },
  884.     { 16*8+0, 16*8+1, 16*8+2, 16*8+3, 16*8+4, 16*8+5, 16*8+6, 16*8+7,
  885.             0, 1, 2, 3, 4, 5, 6, 7 },
  886.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
  887.             8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
  888.     16*16
  889. };
  890.  
  891. static struct GfxDecodeInfo gfxdecodeinfo[] =
  892. {
  893.     { REGION_GFX1, 0, &charlayout,   0, 16 },    /* Characters 8x8 */
  894.     { REGION_GFX2, 0, &tilelayout, 512, 16 },    /* Tiles 16x16 */
  895.     { REGION_GFX3, 0, &tilelayout, 768, 16 },    /* Tiles 16x16 */
  896.     { REGION_GFX4, 0, &tilelayout, 256, 16 },    /* Sprites 16x16 */
  897.     { -1 } /* end of array */
  898. };
  899.  
  900. static struct GfxDecodeInfo midres_gfxdecodeinfo[] =
  901. {
  902.     { REGION_GFX1, 0, &charlayout, 256, 16 },    /* Characters 8x8 */
  903.     { REGION_GFX2, 0, &tilelayout, 512, 16 },    /* Tiles 16x16 */
  904.     { REGION_GFX3, 0, &tilelayout, 768, 16 },    /* Tiles 16x16 */
  905.     { REGION_GFX4, 0, &tilelayout,   0, 16 },    /* Sprites 16x16 */
  906.     { -1 } /* end of array */
  907. };
  908.  
  909. /******************************************************************************/
  910.  
  911. static void sound_irq(int linestate)
  912. {
  913.     cpu_set_irq_line(1,0,linestate); /* IRQ */
  914. }
  915.  
  916. static void sound_irq2(int linestate)
  917. {
  918.     cpu_set_irq_line(1,1,linestate); /* IRQ2 */
  919. }
  920.  
  921. static struct YM2203interface ym2203_interface =
  922. {
  923.     1,
  924.     1500000,    /* 12MHz clock divided by 8 = 1.50 MHz */
  925.     { YM2203_VOL(35,90) },
  926.     { 0 },
  927.     { 0 },
  928.     { 0 },
  929.     { 0 }
  930. };
  931.  
  932. static struct YM3812interface ym3812_interface =
  933. {
  934.     1,            /* 1 chip */
  935.     3000000,    /* 12MHz clock divided by 4 = 3.00 MHz */
  936.     { 40 },
  937.     { sound_irq },
  938. };
  939.  
  940. static struct YM3812interface ym3812b_interface =
  941. {
  942.     1,            /* 1 chip */
  943.     3000000,
  944.     { 40 },
  945.     { sound_irq2 },
  946. };
  947.  
  948. static struct OKIM6295interface okim6295_interface =
  949. {
  950.     1,                  /* 1 chip */
  951.     { 7757 },           /* 8000Hz frequency */
  952.     { REGION_SOUND1 },    /* memory region */
  953.     { 80 }
  954. };
  955.  
  956. /******************************************************************************/
  957.  
  958. static struct MachineDriver machine_driver_hbarrel =
  959. {
  960.     /* basic machine hardware */
  961.     {
  962.         {
  963.             CPU_M68000,
  964.             10000000,
  965.             dec0_readmem,dec0_writemem,0,0,
  966.             m68_level6_irq,1 /* VBL, level 5 interrupts from i8751 */
  967.         },
  968.         {
  969.             CPU_M6502 | CPU_AUDIO_CPU,
  970.             1500000,
  971.             dec0_s_readmem,dec0_s_writemem,0,0,
  972.             ignore_interrupt,0
  973.         }
  974.     },
  975.     58, 529, /* 58 Hz, 529ms Vblank */
  976.     1,    /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
  977.     0,
  978.  
  979.     /* video hardware */
  980.      32*8, 32*8, { 0*8, 32*8-1, 1*8, 31*8-1 },
  981.  
  982.     gfxdecodeinfo,
  983.     1024, 1024,
  984.     0,
  985.  
  986.     VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_UPDATE_BEFORE_VBLANK,
  987.     0,
  988.     dec0_vh_start,
  989.     dec0_vh_stop,
  990.     hbarrel_vh_screenrefresh,
  991.  
  992.     /* sound hardware */
  993.     0,0,0,0,
  994.     {
  995.         {
  996.             SOUND_YM2203,
  997.             &ym2203_interface
  998.         },
  999.         {
  1000.             SOUND_YM3812,
  1001.             &ym3812_interface
  1002.         },
  1003.         {
  1004.             SOUND_OKIM6295,
  1005.             &okim6295_interface
  1006.         }
  1007.     }
  1008. };
  1009.  
  1010. static struct MachineDriver machine_driver_baddudes =
  1011. {
  1012.     /* basic machine hardware */
  1013.     {
  1014.         {
  1015.             CPU_M68000,
  1016.             10000000,
  1017.             dec0_readmem,dec0_writemem,0,0,
  1018.             m68_level6_irq,1 /* VBL, level 5 interrupts from i8751 */
  1019.         },
  1020.         {
  1021.             CPU_M6502 | CPU_AUDIO_CPU,
  1022.             1500000,
  1023.             dec0_s_readmem,dec0_s_writemem,0,0,
  1024.             ignore_interrupt,0
  1025.         }
  1026.     },
  1027.     58, 529, /* 58 Hz, 529ms Vblank */
  1028.     1,    /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
  1029.     0,
  1030.  
  1031.     /* video hardware */
  1032.      32*8, 64*8, { 0*8, 32*8-1, 1*8, 31*8-1 },
  1033.  
  1034.     gfxdecodeinfo,
  1035.     1024, 1024,
  1036.     0,
  1037.  
  1038.     VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_UPDATE_BEFORE_VBLANK,
  1039.     0,
  1040.     dec0_vh_start,
  1041.     dec0_vh_stop,
  1042.     baddudes_vh_screenrefresh,
  1043.  
  1044.     /* sound hardware */
  1045.     0,0,0,0,
  1046.     {
  1047.         {
  1048.             SOUND_YM2203,
  1049.             &ym2203_interface
  1050.         },
  1051.         {
  1052.             SOUND_YM3812,
  1053.             &ym3812_interface
  1054.         },
  1055.         {
  1056.             SOUND_OKIM6295,
  1057.             &okim6295_interface
  1058.         }
  1059.     }
  1060. };
  1061.  
  1062. static struct MachineDriver machine_driver_birdtry =
  1063. {
  1064.     /* basic machine hardware */
  1065.     {
  1066.         {
  1067.             CPU_M68000,
  1068.             10000000,
  1069.             dec0_readmem,dec0_writemem,0,0,
  1070.             m68_level6_irq,1 /* VBL, level 5 interrupts from i8751 */
  1071.         },
  1072.         {
  1073.             CPU_M6502 | CPU_AUDIO_CPU,
  1074.             1500000,
  1075.             dec0_s_readmem,dec0_s_writemem,0,0,
  1076.             ignore_interrupt,0
  1077.         }
  1078.     },
  1079.     58, 529, /* 58 Hz, 529ms Vblank */
  1080.     1,    /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
  1081.     0,
  1082.  
  1083.     /* video hardware */
  1084.      32*8, 32*8, { 0*8, 32*8-1, 1*8, 31*8-1 },
  1085.  
  1086.     gfxdecodeinfo,
  1087.     1024, 1024,
  1088.     0,
  1089.  
  1090.     VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_UPDATE_BEFORE_VBLANK,
  1091.     0,
  1092.     dec0_vh_start,
  1093.     dec0_vh_stop,
  1094.     birdtry_vh_screenrefresh,
  1095.  
  1096.     /* sound hardware */
  1097.     0,0,0,0,
  1098.     {
  1099.         {
  1100.             SOUND_YM2203,
  1101.             &ym2203_interface
  1102.         },
  1103.         {
  1104.             SOUND_YM3812,
  1105.             &ym3812_interface
  1106.         },
  1107.         {
  1108.             SOUND_OKIM6295,
  1109.             &okim6295_interface
  1110.         }
  1111.     }
  1112. };
  1113.  
  1114. static struct MachineDriver machine_driver_robocop =
  1115. {
  1116.     /* basic machine hardware */
  1117.     {
  1118.         {
  1119.             CPU_M68000,
  1120.             10000000,
  1121.             dec0_readmem,dec0_writemem,0,0,
  1122.             m68_level6_irq,1 /* VBL */
  1123.         },
  1124.         {
  1125.             CPU_M6502 | CPU_AUDIO_CPU,
  1126.             1500000,
  1127.             dec0_s_readmem,dec0_s_writemem,0,0,
  1128.             ignore_interrupt,0
  1129.         },
  1130.         {
  1131.             CPU_H6280,
  1132.             21477200/16, /* 21.4772MHz clock */
  1133.             robocop_sub_readmem,robocop_sub_writemem,0,0,
  1134.             ignore_interrupt,0
  1135.         },
  1136.     },
  1137.     58, 529, /* 58 Hz, 529ms Vblank */
  1138.     1,    /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
  1139.     0,
  1140.  
  1141.     /* video hardware */
  1142.     32*8, 32*8, { 0*8, 32*8-1, 1*8, 31*8-1 },
  1143.  
  1144.     gfxdecodeinfo,
  1145.     1024, 1024,
  1146.     0,
  1147.  
  1148.     VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_UPDATE_BEFORE_VBLANK,
  1149.     0,
  1150.     dec0_vh_start,
  1151.     dec0_vh_stop,
  1152.     robocop_vh_screenrefresh,
  1153.  
  1154.     /* sound hardware */
  1155.     0,0,0,0,
  1156.     {
  1157.         {
  1158.             SOUND_YM2203,
  1159.             &ym2203_interface
  1160.         },
  1161.         {
  1162.             SOUND_YM3812,
  1163.             &ym3812_interface
  1164.         },
  1165.         {
  1166.             SOUND_OKIM6295,
  1167.             &okim6295_interface
  1168.         }
  1169.     }
  1170. };
  1171.  
  1172. static struct MachineDriver machine_driver_robocopb =
  1173. {
  1174.     /* basic machine hardware */
  1175.     {
  1176.         {
  1177.             CPU_M68000,
  1178.             10000000,
  1179.             dec0_readmem,dec0_writemem,0,0,
  1180.             m68_level6_irq,1 /* VBL */
  1181.         },
  1182.         {
  1183.             CPU_M6502 | CPU_AUDIO_CPU,
  1184.             1500000,
  1185.             dec0_s_readmem,dec0_s_writemem,0,0,
  1186.             ignore_interrupt,0
  1187.         }
  1188.     },
  1189.     58, 529, /* 58 Hz, 529ms Vblank */
  1190.     1,    /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
  1191.     0,
  1192.  
  1193.     /* video hardware */
  1194.     32*8, 32*8, { 0*8, 32*8-1, 1*8, 31*8-1 },
  1195.  
  1196.     gfxdecodeinfo,
  1197.     1024, 1024,
  1198.     0,
  1199.  
  1200.     VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_UPDATE_BEFORE_VBLANK,
  1201.     0,
  1202.     dec0_vh_start,
  1203.     dec0_vh_stop,
  1204.     robocop_vh_screenrefresh,
  1205.  
  1206.     /* sound hardware */
  1207.     0,0,0,0,
  1208.     {
  1209.         {
  1210.             SOUND_YM2203,
  1211.             &ym2203_interface
  1212.         },
  1213.         {
  1214.             SOUND_YM3812,
  1215.             &ym3812_interface
  1216.         },
  1217.         {
  1218.             SOUND_OKIM6295,
  1219.             &okim6295_interface
  1220.         }
  1221.     }
  1222. };
  1223.  
  1224. static struct MachineDriver machine_driver_hippodrm =
  1225. {
  1226.     /* basic machine hardware */
  1227.     {
  1228.         {
  1229.             CPU_M68000,
  1230.             10000000,
  1231.             dec0_readmem,dec0_writemem,0,0,
  1232.             m68_level6_irq,1 /* VBL */
  1233.         },
  1234.         {
  1235.             CPU_M6502 | CPU_AUDIO_CPU,
  1236.             1500000,
  1237.             dec0_s_readmem,dec0_s_writemem,0,0,
  1238.             ignore_interrupt,0
  1239.         },
  1240.         {
  1241.             CPU_H6280,
  1242.             21477200/16, /* 21.4772MHz clock */
  1243.             hippodrm_sub_readmem,hippodrm_sub_writemem,0,0,
  1244.             ignore_interrupt,0
  1245.         }
  1246.     },
  1247.     58, 529, /* 58 Hz, 529ms Vblank */
  1248.     5,    /* Interleave between H6280 & 68000 */
  1249.     0,
  1250.  
  1251.     /* video hardware */
  1252.      32*8, 32*8, { 0*8, 32*8-1, 1*8, 31*8-1 },
  1253.  
  1254.     gfxdecodeinfo,
  1255.     1024, 1024,
  1256.     0,
  1257.  
  1258.     VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_UPDATE_BEFORE_VBLANK,
  1259.     0,
  1260.     dec0_vh_start,
  1261.     dec0_vh_stop,
  1262.     hippodrm_vh_screenrefresh,
  1263.  
  1264.     /* sound hardware */
  1265.     0,0,0,0,
  1266.     {
  1267.         {
  1268.             SOUND_YM2203,
  1269.             &ym2203_interface
  1270.         },
  1271.         {
  1272.             SOUND_YM3812,
  1273.             &ym3812_interface
  1274.         },
  1275.         {
  1276.             SOUND_OKIM6295,
  1277.             &okim6295_interface
  1278.         }
  1279.     }
  1280. };
  1281.  
  1282. static struct MachineDriver machine_driver_slyspy =
  1283. {
  1284.     /* basic machine hardware */
  1285.     {
  1286.         {
  1287.             CPU_M68000,
  1288.             12000000,
  1289.             slyspy_readmem,slyspy_writemem,0,0,
  1290.             m68_level6_irq,1 /* VBL */
  1291.         },
  1292.         {
  1293.             CPU_H6280 | CPU_AUDIO_CPU,
  1294.             3000000,
  1295.             slyspy_s_readmem,slyspy_s_writemem,0,0,
  1296.             ignore_interrupt,0
  1297.         }
  1298.     },
  1299.     58, 529, /* 58 Hz, 529ms Vblank */
  1300.     1,    /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
  1301.     0,
  1302.  
  1303.     /* video hardware */
  1304.      32*8, 32*8, { 0*8, 32*8-1, 1*8, 31*8-1 },
  1305.  
  1306.     gfxdecodeinfo,
  1307.     1024, 1024,
  1308.     0,
  1309.  
  1310.     VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_UPDATE_BEFORE_VBLANK,
  1311.     0,
  1312.     dec0_nodma_vh_start,
  1313.     dec0_nodma_vh_stop,
  1314.     slyspy_vh_screenrefresh,
  1315.  
  1316.     /* sound hardware */
  1317.     0,0,0,0,
  1318.     {
  1319.         {
  1320.             SOUND_YM2203,
  1321.             &ym2203_interface
  1322.         },
  1323.         {
  1324.             SOUND_YM3812,
  1325.             &ym3812b_interface
  1326.         },
  1327.         {
  1328.             SOUND_OKIM6295,
  1329.             &okim6295_interface
  1330.         }
  1331.     }
  1332. };
  1333.  
  1334. static struct MachineDriver machine_driver_midres =
  1335. {
  1336.     /* basic machine hardware */
  1337.     {
  1338.         {
  1339.             CPU_M68000,
  1340.             12000000,
  1341.             midres_readmem,midres_writemem,0,0,
  1342.             m68_level6_irq,1 /* VBL */
  1343.         },
  1344.         {
  1345.             CPU_H6280 | CPU_AUDIO_CPU,
  1346.             3000000,
  1347.             midres_s_readmem,midres_s_writemem,0,0,
  1348.             ignore_interrupt,0
  1349.         }
  1350.     },
  1351.     58, 529, /* 58 Hz, 529ms Vblank */
  1352.     1,    /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
  1353.     0,
  1354.  
  1355.     /* video hardware */
  1356.     32*8, 32*8, { 0*8, 32*8-1, 1*8, 31*8-1 },
  1357.  
  1358.     midres_gfxdecodeinfo,
  1359.     1024, 1024,
  1360.     0,
  1361.  
  1362.     VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_UPDATE_BEFORE_VBLANK,
  1363.     0,
  1364.     dec0_nodma_vh_start,
  1365.     dec0_nodma_vh_stop,
  1366.     midres_vh_screenrefresh,
  1367.  
  1368.     /* sound hardware */
  1369.     0,0,0,0,
  1370.     {
  1371.         {
  1372.             SOUND_YM2203,
  1373.             &ym2203_interface
  1374.         },
  1375.         {
  1376.             SOUND_YM3812,
  1377.             &ym3812b_interface
  1378.         },
  1379.         {
  1380.             SOUND_OKIM6295,
  1381.             &okim6295_interface
  1382.         }
  1383.     }
  1384. };
  1385.  
  1386. /******************************************************************************/
  1387.  
  1388. ROM_START( hbarrel )
  1389.     ROM_REGION( 0x60000, REGION_CPU1 )    /* 6*64k for 68000 code */
  1390.     ROM_LOAD_EVEN( "hb04.bin",     0x00000, 0x10000, 0x4877b09e )
  1391.     ROM_LOAD_ODD ( "hb01.bin",     0x00000, 0x10000, 0x8b41c219 )
  1392.     ROM_LOAD_EVEN( "hb05.bin",     0x20000, 0x10000, 0x2087d570 )
  1393.     ROM_LOAD_ODD ( "hb02.bin",     0x20000, 0x10000, 0x815536ae )
  1394.     ROM_LOAD_EVEN( "hb06.bin",     0x40000, 0x10000, 0xda4e3fbc )
  1395.     ROM_LOAD_ODD ( "hb03.bin",     0x40000, 0x10000, 0x7fed7c46 )
  1396.  
  1397.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 6502 Sound */
  1398.     ROM_LOAD( "hb07.bin",     0x8000, 0x8000, 0xa127f0f7 )
  1399.  
  1400.     ROM_REGION( 0x20000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars */
  1401.     ROM_LOAD( "hb25.bin",     0x00000, 0x10000, 0x8649762c )
  1402.     ROM_LOAD( "hb26.bin",     0x10000, 0x10000, 0xf8189bbd )
  1403.  
  1404.     ROM_REGION( 0x80000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* tiles */
  1405.     ROM_LOAD( "hb18.bin",     0x00000, 0x10000, 0xef664373 )
  1406.     ROM_LOAD( "hb17.bin",     0x10000, 0x10000, 0xa4f186ac )
  1407.     ROM_LOAD( "hb20.bin",     0x20000, 0x10000, 0x2fc13be0 )
  1408.     ROM_LOAD( "hb19.bin",     0x30000, 0x10000, 0xd6b47869 )
  1409.     ROM_LOAD( "hb22.bin",     0x40000, 0x10000, 0x50d6a1ad )
  1410.     ROM_LOAD( "hb21.bin",     0x50000, 0x10000, 0xf01d75c5 )
  1411.     ROM_LOAD( "hb24.bin",     0x60000, 0x10000, 0xae377361 )
  1412.     ROM_LOAD( "hb23.bin",     0x70000, 0x10000, 0xbbdaf771 )
  1413.  
  1414.     ROM_REGION( 0x40000, REGION_GFX3 | REGIONFLAG_DISPOSE ) /* tiles */
  1415.     ROM_LOAD( "hb29.bin",     0x00000, 0x10000, 0x5514b296 )
  1416.     ROM_LOAD( "hb30.bin",     0x10000, 0x10000, 0x5855e8ef )
  1417.     ROM_LOAD( "hb27.bin",     0x20000, 0x10000, 0x99db7b9c )
  1418.     ROM_LOAD( "hb28.bin",     0x30000, 0x10000, 0x33ce2b1a )
  1419.  
  1420.     ROM_REGION( 0x80000, REGION_GFX4 | REGIONFLAG_DISPOSE ) /* sprites */
  1421.     ROM_LOAD( "hb15.bin",     0x00000, 0x10000, 0x21816707 )
  1422.     ROM_LOAD( "hb16.bin",     0x10000, 0x10000, 0xa5684574 )
  1423.     ROM_LOAD( "hb11.bin",     0x20000, 0x10000, 0x5c768315 )
  1424.     ROM_LOAD( "hb12.bin",     0x30000, 0x10000, 0x8b64d7a4 )
  1425.     ROM_LOAD( "hb13.bin",     0x40000, 0x10000, 0x56e3ed65 )
  1426.     ROM_LOAD( "hb14.bin",     0x50000, 0x10000, 0xbedfe7f3 )
  1427.     ROM_LOAD( "hb09.bin",     0x60000, 0x10000, 0x26240ea0 )
  1428.     ROM_LOAD( "hb10.bin",     0x70000, 0x10000, 0x47d95447 )
  1429.  
  1430.     ROM_REGION( 0x10000, REGION_SOUND1 )    /* ADPCM samples */
  1431.     ROM_LOAD( "hb08.bin",     0x0000, 0x10000, 0x645c5b68 )
  1432. ROM_END
  1433.  
  1434. ROM_START( hbarrelw )
  1435.     ROM_REGION( 0x60000, REGION_CPU1 )    /* 6*64k for 68000 code */
  1436.     ROM_LOAD_EVEN( "hb_ec04.rom",  0x00000, 0x10000, 0xd01bc3db )
  1437.     ROM_LOAD_ODD ( "hb_ec01.rom",  0x00000, 0x10000, 0x6756f8ae )
  1438.     ROM_LOAD_EVEN( "hb05.bin",     0x20000, 0x10000, 0x2087d570 )
  1439.     ROM_LOAD_ODD ( "hb02.bin",     0x20000, 0x10000, 0x815536ae )
  1440.     ROM_LOAD_EVEN( "hb_ec06.rom",  0x40000, 0x10000, 0x61ec20d8 )
  1441.     ROM_LOAD_ODD ( "hb_ec03.rom",  0x40000, 0x10000, 0x720c6b13 )
  1442.  
  1443.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 6502 Sound */
  1444.     ROM_LOAD( "hb_ec07.rom",  0x8000, 0x8000, 0x16a5a1aa )
  1445.  
  1446.     ROM_REGION( 0x20000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars */
  1447.     ROM_LOAD( "hb_ec25.rom",  0x00000, 0x10000, 0x2e5732a2 )
  1448.     ROM_LOAD( "hb_ec26.rom",  0x10000, 0x10000, 0x161a2c4d )
  1449.  
  1450.     ROM_REGION( 0x80000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* tiles */
  1451.     ROM_LOAD( "hb18.bin",     0x00000, 0x10000, 0xef664373 )
  1452.     ROM_LOAD( "hb17.bin",     0x10000, 0x10000, 0xa4f186ac )
  1453.     ROM_LOAD( "hb20.bin",     0x20000, 0x10000, 0x2fc13be0 )
  1454.     ROM_LOAD( "hb19.bin",     0x30000, 0x10000, 0xd6b47869 )
  1455.     ROM_LOAD( "hb22.bin",     0x40000, 0x10000, 0x50d6a1ad )
  1456.     ROM_LOAD( "hb21.bin",     0x50000, 0x10000, 0xf01d75c5 )
  1457.     ROM_LOAD( "hb24.bin",     0x60000, 0x10000, 0xae377361 )
  1458.     ROM_LOAD( "hb23.bin",     0x70000, 0x10000, 0xbbdaf771 )
  1459.  
  1460.     ROM_REGION( 0x40000, REGION_GFX3 | REGIONFLAG_DISPOSE ) /* tiles */
  1461.     ROM_LOAD( "hb29.bin",     0x00000, 0x10000, 0x5514b296 )
  1462.     ROM_LOAD( "hb30.bin",     0x10000, 0x10000, 0x5855e8ef )
  1463.     ROM_LOAD( "hb27.bin",     0x20000, 0x10000, 0x99db7b9c )
  1464.     ROM_LOAD( "hb28.bin",     0x30000, 0x10000, 0x33ce2b1a )
  1465.  
  1466.     ROM_REGION( 0x80000, REGION_GFX4 | REGIONFLAG_DISPOSE ) /* sprites */
  1467.     ROM_LOAD( "hb15.bin",     0x00000, 0x10000, 0x21816707 )
  1468.     ROM_LOAD( "hb16.bin",     0x10000, 0x10000, 0xa5684574 )
  1469.     ROM_LOAD( "hb11.bin",     0x20000, 0x10000, 0x5c768315 )
  1470.     ROM_LOAD( "hb12.bin",     0x30000, 0x10000, 0x8b64d7a4 )
  1471.     ROM_LOAD( "hb13.bin",     0x40000, 0x10000, 0x56e3ed65 )
  1472.     ROM_LOAD( "hb14.bin",     0x50000, 0x10000, 0xbedfe7f3 )
  1473.     ROM_LOAD( "hb09.bin",     0x60000, 0x10000, 0x26240ea0 )
  1474.     ROM_LOAD( "hb10.bin",     0x70000, 0x10000, 0x47d95447 )
  1475.  
  1476.     ROM_REGION( 0x10000, REGION_SOUND1 )    /* ADPCM samples */
  1477.     ROM_LOAD( "hb_ec08.rom",  0x0000, 0x10000, 0x2159a609 )
  1478. ROM_END
  1479.  
  1480. ROM_START( baddudes )
  1481.     ROM_REGION( 0x60000, REGION_CPU1 )    /* 6*64k for 68000 code, middle 0x20000 unused */
  1482.     ROM_LOAD_EVEN( "baddudes.4",   0x00000, 0x10000, 0x4bf158a7 )
  1483.     ROM_LOAD_ODD ( "baddudes.1",   0x00000, 0x10000, 0x74f5110c )
  1484.     ROM_LOAD_EVEN( "baddudes.6",   0x40000, 0x10000, 0x3ff8da57 )
  1485.     ROM_LOAD_ODD ( "baddudes.3",   0x40000, 0x10000, 0xf8f2bd94 )
  1486.  
  1487.     ROM_REGION( 0x10000, REGION_CPU2 )    /* Sound CPU */
  1488.     ROM_LOAD( "baddudes.7",   0x8000, 0x8000, 0x9fb1ef4b )
  1489.  
  1490.     ROM_REGION( 0x10000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars */
  1491.     ROM_LOAD( "baddudes.25",  0x00000, 0x08000, 0xbcf59a69 )
  1492.     ROM_LOAD( "baddudes.26",  0x08000, 0x08000, 0x9aff67b8 )
  1493.  
  1494.     ROM_REGION( 0x40000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* tiles */
  1495.     ROM_LOAD( "baddudes.18",  0x00000, 0x10000, 0x05cfc3e5 )
  1496.     ROM_LOAD( "baddudes.20",  0x10000, 0x10000, 0xe11e988f )
  1497.     ROM_LOAD( "baddudes.22",  0x20000, 0x10000, 0xb893d880 )
  1498.     ROM_LOAD( "baddudes.24",  0x30000, 0x10000, 0x6f226dda )
  1499.  
  1500.     ROM_REGION( 0x20000, REGION_GFX3 | REGIONFLAG_DISPOSE ) /* tiles */
  1501.     ROM_LOAD( "baddudes.30",  0x08000, 0x08000, 0x982da0d1 )
  1502.     ROM_CONTINUE(             0x00000, 0x08000 )    /* the two halves are swapped */
  1503.     ROM_LOAD( "baddudes.28",  0x18000, 0x08000, 0xf01ebb3b )
  1504.     ROM_CONTINUE(             0x10000, 0x08000 )
  1505.  
  1506.     ROM_REGION( 0x80000, REGION_GFX4 | REGIONFLAG_DISPOSE ) /* sprites */
  1507.     ROM_LOAD( "baddudes.15",  0x00000, 0x10000, 0xa38a7d30 )
  1508.     ROM_LOAD( "baddudes.16",  0x10000, 0x08000, 0x17e42633 )
  1509.     ROM_LOAD( "baddudes.11",  0x20000, 0x10000, 0x3a77326c )
  1510.     ROM_LOAD( "baddudes.12",  0x30000, 0x08000, 0xfea2a134 )
  1511.     ROM_LOAD( "baddudes.13",  0x40000, 0x10000, 0xe5ae2751 )
  1512.     ROM_LOAD( "baddudes.14",  0x50000, 0x08000, 0xe83c760a )
  1513.     ROM_LOAD( "baddudes.9",   0x60000, 0x10000, 0x6901e628 )
  1514.     ROM_LOAD( "baddudes.10",  0x70000, 0x08000, 0xeeee8a1a )
  1515.  
  1516.     ROM_REGION( 0x10000, REGION_SOUND1 )    /* ADPCM samples */
  1517.     ROM_LOAD( "baddudes.8",   0x0000, 0x10000, 0x3c87463e )
  1518. ROM_END
  1519.  
  1520. ROM_START( drgninja )
  1521.     ROM_REGION( 0x60000, REGION_CPU1 )    /* 6*64k for 68000 code, middle 0x20000 unused */
  1522.     ROM_LOAD_EVEN( "drgninja.04",  0x00000, 0x10000, 0x41b8b3f8 )
  1523.     ROM_LOAD_ODD ( "drgninja.01",  0x00000, 0x10000, 0xe08e6885 )
  1524.     ROM_LOAD_EVEN( "drgninja.06",  0x40000, 0x10000, 0x2b81faf7 )
  1525.     ROM_LOAD_ODD ( "drgninja.03",  0x40000, 0x10000, 0xc52c2e9d )
  1526.  
  1527.     ROM_REGION( 0x10000, REGION_CPU2 )    /* Sound CPU */
  1528.     ROM_LOAD( "drgninja.07",  0x8000, 0x8000, 0x001d2f51 )
  1529.  
  1530.     ROM_REGION( 0x10000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars */
  1531.     ROM_LOAD( "drgninja.25",  0x00000, 0x08000, 0x6791bc20 )
  1532.     ROM_LOAD( "drgninja.26",  0x08000, 0x08000, 0x5d75fc8f )
  1533.  
  1534.     ROM_REGION( 0x40000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* tiles */
  1535.     ROM_LOAD( "baddudes.18",  0x00000, 0x10000, 0x05cfc3e5 )
  1536.     ROM_LOAD( "baddudes.20",  0x10000, 0x10000, 0xe11e988f )
  1537.     ROM_LOAD( "baddudes.22",  0x20000, 0x10000, 0xb893d880 )
  1538.     ROM_LOAD( "baddudes.24",  0x30000, 0x10000, 0x6f226dda )
  1539.  
  1540.     ROM_REGION( 0x20000, REGION_GFX3 | REGIONFLAG_DISPOSE ) /* tiles */
  1541.     ROM_LOAD( "drgninja.30",  0x08000, 0x08000, 0x2438e67e )
  1542.     ROM_CONTINUE(             0x00000, 0x08000 )    /* the two halves are swapped */
  1543.     ROM_LOAD( "drgninja.28",  0x18000, 0x08000, 0x5c692ab3 )
  1544.     ROM_CONTINUE(             0x10000, 0x08000 )
  1545.  
  1546.     ROM_REGION( 0x80000, REGION_GFX4 | REGIONFLAG_DISPOSE ) /* sprites */
  1547.     ROM_LOAD( "drgninja.15",  0x00000, 0x10000, 0x5617d67f )
  1548.     ROM_LOAD( "baddudes.16",  0x10000, 0x08000, 0x17e42633 )
  1549.     ROM_LOAD( "drgninja.11",  0x20000, 0x10000, 0xba83e8d8 )
  1550.     ROM_LOAD( "baddudes.12",  0x30000, 0x08000, 0xfea2a134 )
  1551.     ROM_LOAD( "drgninja.13",  0x40000, 0x10000, 0xfd91e08e )
  1552.     ROM_LOAD( "baddudes.14",  0x50000, 0x08000, 0xe83c760a )
  1553.     ROM_LOAD( "baddudes.9",   0x60000, 0x10000, 0x6901e628 )
  1554.     ROM_LOAD( "baddudes.10",  0x70000, 0x08000, 0xeeee8a1a )
  1555.  
  1556.     ROM_REGION( 0x10000, REGION_SOUND1 )    /* ADPCM samples */
  1557.     ROM_LOAD( "baddudes.8",   0x0000, 0x10000, 0x3c87463e )
  1558. ROM_END
  1559.  
  1560. ROM_START( birdtry )
  1561.     ROM_REGION( 0x60000, REGION_CPU1 )    /* 6*64k for 68000 code */
  1562.     ROM_LOAD_EVEN( "ek-04.bin",     0x00000, 0x10000, 0x5f0f4686 )
  1563.     ROM_LOAD_ODD ( "ek-01.bin",     0x00000, 0x10000, 0x47f470db )
  1564.     ROM_LOAD_EVEN( "ek-05.bin",     0x20000, 0x10000, 0xb508cffd )
  1565.     ROM_LOAD_ODD ( "ek-02.bin",     0x20000, 0x10000, 0x0195d989 )
  1566.     ROM_LOAD_EVEN( "ek-06.bin",     0x40000, 0x10000, 0x301d57d8 )
  1567.     ROM_LOAD_ODD ( "ek-03.bin",     0x40000, 0x10000, 0x73b0acc5 )
  1568.  
  1569.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 6502 Sound */
  1570.     ROM_LOAD( "ek-07.bin",     0x8000, 0x8000, 0x236549bc )
  1571.  
  1572.     ROM_REGION( 0x10000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars */
  1573.     ROM_LOAD( "ek-25.bin",     0x00000, 0x08000, 0x4df134ad )
  1574.     ROM_LOAD( "ek-26.bin",     0x08000, 0x08000, 0xa00d3e8e )
  1575.  
  1576.     ROM_REGION( 0x80000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* tiles */
  1577.     ROM_LOAD( "ek-18.bin",     0x00000, 0x10000, 0x9886fb70 )
  1578.     ROM_LOAD( "ek-17.bin",     0x10000, 0x10000, 0xbed91bf7 )
  1579.     ROM_LOAD( "ek-20.bin",     0x20000, 0x10000, 0x45d53965 )
  1580.     ROM_LOAD( "ek-19.bin",     0x30000, 0x10000, 0xc2949dd2 )
  1581.     ROM_LOAD( "ek-22.bin",     0x40000, 0x10000, 0x7f2cc80a )
  1582.     ROM_LOAD( "ek-21.bin",     0x50000, 0x10000, 0x281bc793 )
  1583.     ROM_LOAD( "ek-24.bin",     0x60000, 0x10000, 0x2244cc75 )
  1584.     ROM_LOAD( "ek-23.bin",     0x70000, 0x10000, 0xd0ed0116 )
  1585.  
  1586.     ROM_REGION( 0x10000, REGION_GFX3 | REGIONFLAG_DISPOSE ) /* tiles */
  1587.     /* This game doesn't have the extra playfield chip, so no roms */
  1588.  
  1589.     ROM_REGION( 0x80000, REGION_GFX4 | REGIONFLAG_DISPOSE ) /* sprites */
  1590.     ROM_LOAD( "ek-15.bin",     0x00000, 0x10000, 0xa6a041a3 )
  1591.     ROM_LOAD( "ek-16.bin",     0x10000, 0x08000, 0x784f62b0 )
  1592.     ROM_LOAD( "ek-11.bin",     0x20000, 0x10000, 0x9224a6b9 )
  1593.     ROM_LOAD( "ek-12.bin",     0x30000, 0x08000, 0x12deecfa )
  1594.     ROM_LOAD( "ek-13.bin",     0x40000, 0x10000, 0x1f023459 )
  1595.     ROM_LOAD( "ek-14.bin",     0x50000, 0x08000, 0x57d54943 )
  1596.     ROM_LOAD( "ek-09.bin",     0x60000, 0x10000, 0x6d2d488a )
  1597.     ROM_LOAD( "ek-10.bin",     0x70000, 0x08000, 0x580ba206 )
  1598.  
  1599.     ROM_REGION( 0x10000, REGION_SOUND1 )    /* ADPCM samples */
  1600.     ROM_LOAD( "ek-08.bin",     0x0000, 0x10000, 0xbe3db6cb )
  1601. ROM_END
  1602.  
  1603. ROM_START( robocop )
  1604.     ROM_REGION( 0x40000, REGION_CPU1 ) /* 68000 code */
  1605.     ROM_LOAD_EVEN( "ep05-3", 0x00000, 0x10000, 0xba69bf84 )
  1606.     ROM_LOAD_ODD ( "ep01-3", 0x00000, 0x10000, 0x2a9f6e2c )
  1607.     ROM_LOAD_EVEN( "ep04-3", 0x20000, 0x10000, 0x39181778 )
  1608.     ROM_LOAD_ODD ( "ep00-3", 0x20000, 0x10000, 0xe128541f )
  1609.  
  1610.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 6502 Sound */
  1611.     ROM_LOAD( "ep03-3", 0x08000, 0x08000, 0x5b164b24 )
  1612.  
  1613.     ROM_REGION( 0x10000, REGION_CPU3 )    /* HuC6280 CPU */
  1614.     /* Filled in later */
  1615.  
  1616.     ROM_REGION( 0x20000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars */
  1617.     ROM_LOAD( "ep23", 0x00000, 0x10000, 0xa77e4ab1 )
  1618.     ROM_LOAD( "ep22", 0x10000, 0x10000, 0x9fbd6903 )
  1619.  
  1620.     ROM_REGION( 0x40000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* tiles */
  1621.     ROM_LOAD( "ep20", 0x00000, 0x10000, 0x1d8d38b8 )
  1622.     ROM_LOAD( "ep21", 0x10000, 0x10000, 0x187929b2 )
  1623.     ROM_LOAD( "ep18", 0x20000, 0x10000, 0xb6580b5e )
  1624.     ROM_LOAD( "ep19", 0x30000, 0x10000, 0x9bad01c7 )
  1625.  
  1626.     ROM_REGION( 0x20000, REGION_GFX3 | REGIONFLAG_DISPOSE ) /* tiles */
  1627.     ROM_LOAD( "ep14", 0x00000, 0x08000, 0xca56ceda )
  1628.     ROM_LOAD( "ep15", 0x08000, 0x08000, 0xa945269c )
  1629.     ROM_LOAD( "ep16", 0x10000, 0x08000, 0xe7fa4d58 )
  1630.     ROM_LOAD( "ep17", 0x18000, 0x08000, 0x84aae89d )
  1631.  
  1632.     ROM_REGION( 0x80000, REGION_GFX4 | REGIONFLAG_DISPOSE ) /* sprites */
  1633.     ROM_LOAD( "ep07", 0x00000, 0x10000, 0x495d75cf )
  1634.     ROM_LOAD( "ep06", 0x10000, 0x08000, 0xa2ae32e2 )
  1635.     ROM_LOAD( "ep11", 0x20000, 0x10000, 0x62fa425a )
  1636.     ROM_LOAD( "ep10", 0x30000, 0x08000, 0xcce3bd95 )
  1637.     ROM_LOAD( "ep09", 0x40000, 0x10000, 0x11bed656 )
  1638.     ROM_LOAD( "ep08", 0x50000, 0x08000, 0xc45c7b4c )
  1639.     ROM_LOAD( "ep13", 0x60000, 0x10000, 0x8fca9f28 )
  1640.     ROM_LOAD( "ep12", 0x70000, 0x08000, 0x3cd1d0c3 )
  1641.  
  1642.     ROM_REGION( 0x10000, REGION_SOUND1 )    /* ADPCM samples */
  1643.     ROM_LOAD( "ep02", 0x00000, 0x10000, 0x711ce46f )
  1644. ROM_END
  1645.  
  1646. ROM_START( robocopu )
  1647.     ROM_REGION( 0x40000, REGION_CPU1 ) /* 68000 code */
  1648.     ROM_LOAD_EVEN( "ep05-1", 0x00000, 0x10000, 0x8de5cb3d )
  1649.     ROM_LOAD_ODD ( "ep01-1", 0x00000, 0x10000, 0xb3c6bc02 )
  1650.     ROM_LOAD_EVEN( "ep04", 0x20000, 0x10000, 0xc38b9d18 )
  1651.     ROM_LOAD_ODD ( "ep00", 0x20000, 0x10000, 0x374c91aa )
  1652.  
  1653.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 6502 Sound */
  1654.     ROM_LOAD( "ep03", 0x08000, 0x08000, 0x1089eab8 )
  1655.  
  1656.     ROM_REGION( 0x10000, REGION_CPU3 )    /* HuC6280 CPU */
  1657.     /* Filled in later */
  1658.  
  1659.     ROM_REGION( 0x20000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars */
  1660.     ROM_LOAD( "ep23", 0x00000, 0x10000, 0xa77e4ab1 )
  1661.     ROM_LOAD( "ep22", 0x10000, 0x10000, 0x9fbd6903 )
  1662.  
  1663.     ROM_REGION( 0x40000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* tiles */
  1664.     ROM_LOAD( "ep20", 0x00000, 0x10000, 0x1d8d38b8 )
  1665.     ROM_LOAD( "ep21", 0x10000, 0x10000, 0x187929b2 )
  1666.     ROM_LOAD( "ep18", 0x20000, 0x10000, 0xb6580b5e )
  1667.     ROM_LOAD( "ep19", 0x30000, 0x10000, 0x9bad01c7 )
  1668.  
  1669.     ROM_REGION( 0x20000, REGION_GFX3 | REGIONFLAG_DISPOSE ) /* tiles */
  1670.     ROM_LOAD( "ep14", 0x00000, 0x08000, 0xca56ceda )
  1671.     ROM_LOAD( "ep15", 0x08000, 0x08000, 0xa945269c )
  1672.     ROM_LOAD( "ep16", 0x10000, 0x08000, 0xe7fa4d58 )
  1673.     ROM_LOAD( "ep17", 0x18000, 0x08000, 0x84aae89d )
  1674.  
  1675.     ROM_REGION( 0x80000, REGION_GFX4 | REGIONFLAG_DISPOSE ) /* sprites */
  1676.     ROM_LOAD( "ep07", 0x00000, 0x10000, 0x495d75cf )
  1677.     ROM_LOAD( "ep06", 0x10000, 0x08000, 0xa2ae32e2 )
  1678.     ROM_LOAD( "ep11", 0x20000, 0x10000, 0x62fa425a )
  1679.     ROM_LOAD( "ep10", 0x30000, 0x08000, 0xcce3bd95 )
  1680.     ROM_LOAD( "ep09", 0x40000, 0x10000, 0x11bed656 )
  1681.     ROM_LOAD( "ep08", 0x50000, 0x08000, 0xc45c7b4c )
  1682.     ROM_LOAD( "ep13", 0x60000, 0x10000, 0x8fca9f28 )
  1683.     ROM_LOAD( "ep12", 0x70000, 0x08000, 0x3cd1d0c3 )
  1684.  
  1685.     ROM_REGION( 0x10000, REGION_SOUND1 )    /* ADPCM samples */
  1686.     ROM_LOAD( "ep02", 0x00000, 0x10000, 0x711ce46f )
  1687. ROM_END
  1688.  
  1689. ROM_START( robocpu0 )
  1690.     ROM_REGION( 0x40000, REGION_CPU1 ) /* 68000 code */
  1691.     ROM_LOAD_EVEN( "ep05", 0x00000, 0x10000, 0xc465bdd8 )
  1692.     ROM_LOAD_ODD ( "ep01", 0x00000, 0x10000, 0x1352d36e )
  1693.     ROM_LOAD_EVEN( "ep04", 0x20000, 0x10000, 0xc38b9d18 )
  1694.     ROM_LOAD_ODD ( "ep00", 0x20000, 0x10000, 0x374c91aa )
  1695.  
  1696.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 6502 Sound */
  1697.     ROM_LOAD( "ep03", 0x08000, 0x08000, 0x1089eab8 )
  1698.  
  1699.     ROM_REGION( 0x10000, REGION_CPU3 )    /* HuC6280 CPU */
  1700.     /* Filled in later */
  1701.  
  1702.     ROM_REGION( 0x20000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars */
  1703.     ROM_LOAD( "ep23", 0x00000, 0x10000, 0xa77e4ab1 )
  1704.     ROM_LOAD( "ep22", 0x10000, 0x10000, 0x9fbd6903 )
  1705.  
  1706.     ROM_REGION( 0x40000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* tiles */
  1707.     ROM_LOAD( "ep20", 0x00000, 0x10000, 0x1d8d38b8 )
  1708.     ROM_LOAD( "ep21", 0x10000, 0x10000, 0x187929b2 )
  1709.     ROM_LOAD( "ep18", 0x20000, 0x10000, 0xb6580b5e )
  1710.     ROM_LOAD( "ep19", 0x30000, 0x10000, 0x9bad01c7 )
  1711.  
  1712.     ROM_REGION( 0x20000, REGION_GFX3 | REGIONFLAG_DISPOSE ) /* tiles */
  1713.     ROM_LOAD( "ep14", 0x00000, 0x08000, 0xca56ceda )
  1714.     ROM_LOAD( "ep15", 0x08000, 0x08000, 0xa945269c )
  1715.     ROM_LOAD( "ep16", 0x10000, 0x08000, 0xe7fa4d58 )
  1716.     ROM_LOAD( "ep17", 0x18000, 0x08000, 0x84aae89d )
  1717.  
  1718.     ROM_REGION( 0x80000, REGION_GFX4 | REGIONFLAG_DISPOSE ) /* sprites */
  1719.     ROM_LOAD( "ep07", 0x00000, 0x10000, 0x495d75cf )
  1720.     ROM_LOAD( "ep06", 0x10000, 0x08000, 0xa2ae32e2 )
  1721.     ROM_LOAD( "ep11", 0x20000, 0x10000, 0x62fa425a )
  1722.     ROM_LOAD( "ep10", 0x30000, 0x08000, 0xcce3bd95 )
  1723.     ROM_LOAD( "ep09", 0x40000, 0x10000, 0x11bed656 )
  1724.     ROM_LOAD( "ep08", 0x50000, 0x08000, 0xc45c7b4c )
  1725.     ROM_LOAD( "ep13", 0x60000, 0x10000, 0x8fca9f28 )
  1726.     ROM_LOAD( "ep12", 0x70000, 0x08000, 0x3cd1d0c3 )
  1727.  
  1728.     ROM_REGION( 0x10000, REGION_SOUND1 )    /* ADPCM samples */
  1729.     ROM_LOAD( "ep02", 0x00000, 0x10000, 0x711ce46f )
  1730. ROM_END
  1731.  
  1732. ROM_START( robocopb )
  1733.     ROM_REGION( 0x40000, REGION_CPU1 ) /* 68000 code */
  1734.     ROM_LOAD_EVEN( "robop_05.rom", 0x00000, 0x10000, 0xbcef3e9b )
  1735.     ROM_LOAD_ODD ( "robop_01.rom", 0x00000, 0x10000, 0xc9803685 )
  1736.     ROM_LOAD_EVEN( "robop_04.rom", 0x20000, 0x10000, 0x9d7b79e0 )
  1737.     ROM_LOAD_ODD ( "robop_00.rom", 0x20000, 0x10000, 0x80ba64ab )
  1738.  
  1739.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 6502 Sound */
  1740.     ROM_LOAD( "ep03-3", 0x08000, 0x08000, 0x5b164b24 )
  1741.  
  1742.     ROM_REGION( 0x20000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars */
  1743.     ROM_LOAD( "ep23", 0x00000, 0x10000, 0xa77e4ab1 )
  1744.     ROM_LOAD( "ep22", 0x10000, 0x10000, 0x9fbd6903 )
  1745.  
  1746.     ROM_REGION( 0x40000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* tiles */
  1747.     ROM_LOAD( "ep20", 0x00000, 0x10000, 0x1d8d38b8 )
  1748.     ROM_LOAD( "ep21", 0x10000, 0x10000, 0x187929b2 )
  1749.     ROM_LOAD( "ep18", 0x20000, 0x10000, 0xb6580b5e )
  1750.     ROM_LOAD( "ep19", 0x30000, 0x10000, 0x9bad01c7 )
  1751.  
  1752.     ROM_REGION( 0x20000, REGION_GFX3 | REGIONFLAG_DISPOSE ) /* tiles */
  1753.     ROM_LOAD( "ep14", 0x00000, 0x08000, 0xca56ceda )
  1754.     ROM_LOAD( "ep15", 0x08000, 0x08000, 0xa945269c )
  1755.     ROM_LOAD( "ep16", 0x10000, 0x08000, 0xe7fa4d58 )
  1756.     ROM_LOAD( "ep17", 0x18000, 0x08000, 0x84aae89d )
  1757.  
  1758.     ROM_REGION( 0x80000, REGION_GFX4 | REGIONFLAG_DISPOSE ) /* sprites */
  1759.     ROM_LOAD( "ep07", 0x00000, 0x10000, 0x495d75cf )
  1760.     ROM_LOAD( "ep06", 0x10000, 0x08000, 0xa2ae32e2 )
  1761.     ROM_LOAD( "ep11", 0x20000, 0x10000, 0x62fa425a )
  1762.     ROM_LOAD( "ep10", 0x30000, 0x08000, 0xcce3bd95 )
  1763.     ROM_LOAD( "ep09", 0x40000, 0x10000, 0x11bed656 )
  1764.     ROM_LOAD( "ep08", 0x50000, 0x08000, 0xc45c7b4c )
  1765.     ROM_LOAD( "ep13", 0x60000, 0x10000, 0x8fca9f28 )
  1766.     ROM_LOAD( "ep12", 0x70000, 0x08000, 0x3cd1d0c3 )
  1767.  
  1768.     ROM_REGION( 0x10000, REGION_SOUND1 )    /* ADPCM samples */
  1769.     ROM_LOAD( "ep02", 0x00000, 0x10000, 0x711ce46f )
  1770. ROM_END
  1771.  
  1772. ROM_START( hippodrm )
  1773.     ROM_REGION( 0x40000, REGION_CPU1 )    /* 4*64k for 68000 code */
  1774.     ROM_LOAD_EVEN( "ew02",         0x00000, 0x10000, 0xdf0d7dc6 )
  1775.     ROM_LOAD_ODD ( "ew01",         0x00000, 0x10000, 0xd5670aa7 )
  1776.     ROM_LOAD_EVEN( "ew05",         0x20000, 0x10000, 0xc76d65ec )
  1777.     ROM_LOAD_ODD ( "ew00",         0x20000, 0x10000, 0xe9b427a6 )
  1778.  
  1779.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 6502 sound */
  1780.     ROM_LOAD( "ew04",         0x8000, 0x8000, 0x9871b98d )
  1781.  
  1782.     ROM_REGION( 0x10000, REGION_CPU3 ) /* HuC6280 CPU */
  1783.     ROM_LOAD( "ew08",         0x00000, 0x10000, 0x53010534 )
  1784.  
  1785.     ROM_REGION( 0x20000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars */
  1786.     ROM_LOAD( "ew14",         0x00000, 0x10000, 0x71ca593d )
  1787.     ROM_LOAD( "ew13",         0x10000, 0x10000, 0x86be5fa7 )
  1788.  
  1789.     ROM_REGION( 0x20000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* tiles */
  1790.     ROM_LOAD( "ew19",         0x00000, 0x08000, 0x6b80d7a3 )
  1791.     ROM_LOAD( "ew18",         0x08000, 0x08000, 0x78d3d764 )
  1792.     ROM_LOAD( "ew20",         0x10000, 0x08000, 0xce9f5de3 )
  1793.     ROM_LOAD( "ew21",         0x18000, 0x08000, 0x487a7ba2 )
  1794.  
  1795.     ROM_REGION( 0x20000, REGION_GFX3 | REGIONFLAG_DISPOSE ) /* tiles */
  1796.     ROM_LOAD( "ew24",         0x00000, 0x08000, 0x4e1bc2a4 )
  1797.     ROM_LOAD( "ew25",         0x08000, 0x08000, 0x9eb47dfb )
  1798.     ROM_LOAD( "ew23",         0x10000, 0x08000, 0x9ecf479e )
  1799.     ROM_LOAD( "ew22",         0x18000, 0x08000, 0xe55669aa )
  1800.  
  1801.     ROM_REGION( 0x80000, REGION_GFX4 | REGIONFLAG_DISPOSE ) /* sprites */
  1802.     ROM_LOAD( "ev15",         0x00000, 0x10000, 0x1d80f797 )
  1803.     ROM_LOAD( "ew16",         0x10000, 0x10000, 0x96233177 )
  1804.     ROM_LOAD( "ev10",         0x20000, 0x10000, 0xc4e7116b )
  1805.     ROM_LOAD( "ew11",         0x30000, 0x10000, 0xf2e007fc )
  1806.     ROM_LOAD( "ev06",         0x40000, 0x10000, 0x6c794f1a )
  1807.     ROM_LOAD( "ew07",         0x50000, 0x10000, 0x470b6989 )
  1808.     ROM_LOAD( "ev17",         0x60000, 0x10000, 0x045509d4 )
  1809.     ROM_LOAD( "ew12",         0x70000, 0x10000, 0xa2d244bc )
  1810.  
  1811.     ROM_REGION( 0x10000, REGION_SOUND1 )    /* ADPCM samples */
  1812.     ROM_LOAD( "ew03",         0x0000, 0x10000, 0xb606924d )
  1813. ROM_END
  1814.  
  1815. ROM_START( ffantasy )
  1816.     ROM_REGION( 0x40000, REGION_CPU1 )    /* 4*64k for 68000 code */
  1817.     ROM_LOAD_EVEN( "ev02",         0x00000, 0x10000, 0x797a7860 )
  1818.     ROM_LOAD_ODD ( "ev01",         0x00000, 0x10000, 0x0f17184d )
  1819.     ROM_LOAD_EVEN( "ew05",         0x20000, 0x10000, 0xc76d65ec )
  1820.     ROM_LOAD_ODD ( "ew00",         0x20000, 0x10000, 0xe9b427a6 )
  1821.  
  1822.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 6502 sound */
  1823.     ROM_LOAD( "ew04",         0x8000, 0x8000, 0x9871b98d )
  1824.  
  1825.     ROM_REGION( 0x10000, REGION_CPU3 ) /* HuC6280 CPU */
  1826.     ROM_LOAD( "ew08",         0x00000, 0x10000, 0x53010534 )
  1827.  
  1828.     ROM_REGION( 0x20000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars */
  1829.     ROM_LOAD( "ev14",         0x00000, 0x10000, 0x686f72c1 )
  1830.     ROM_LOAD( "ev13",         0x10000, 0x10000, 0xb787dcc9 )
  1831.  
  1832.     ROM_REGION( 0x20000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* tiles */
  1833.     ROM_LOAD( "ew19",         0x00000, 0x08000, 0x6b80d7a3 )
  1834.     ROM_LOAD( "ew18",         0x08000, 0x08000, 0x78d3d764 )
  1835.     ROM_LOAD( "ew20",         0x10000, 0x08000, 0xce9f5de3 )
  1836.     ROM_LOAD( "ew21",         0x18000, 0x08000, 0x487a7ba2 )
  1837.  
  1838.     ROM_REGION( 0x20000, REGION_GFX3 | REGIONFLAG_DISPOSE ) /* tiles */
  1839.     ROM_LOAD( "ew24",         0x00000, 0x08000, 0x4e1bc2a4 )
  1840.     ROM_LOAD( "ew25",         0x08000, 0x08000, 0x9eb47dfb )
  1841.     ROM_LOAD( "ew23",         0x10000, 0x08000, 0x9ecf479e )
  1842.     ROM_LOAD( "ew22",         0x18000, 0x08000, 0xe55669aa )
  1843.  
  1844.     ROM_REGION( 0x80000, REGION_GFX4 | REGIONFLAG_DISPOSE ) /* sprites */
  1845.     ROM_LOAD( "ev15",         0x00000, 0x10000, 0x1d80f797 )
  1846.     ROM_LOAD( "ew16",         0x10000, 0x10000, 0x96233177 )
  1847.     ROM_LOAD( "ev10",         0x20000, 0x10000, 0xc4e7116b )
  1848.     ROM_LOAD( "ew11",         0x30000, 0x10000, 0xf2e007fc )
  1849.     ROM_LOAD( "ev06",         0x40000, 0x10000, 0x6c794f1a )
  1850.     ROM_LOAD( "ew07",         0x50000, 0x10000, 0x470b6989 )
  1851.     ROM_LOAD( "ev17",         0x60000, 0x10000, 0x045509d4 )
  1852.     ROM_LOAD( "ew12",         0x70000, 0x10000, 0xa2d244bc )
  1853.  
  1854.     ROM_REGION( 0x10000, REGION_SOUND1 )    /* ADPCM samples */
  1855.     ROM_LOAD( "ew03",         0x0000, 0x10000, 0xb606924d )
  1856. ROM_END
  1857.  
  1858. ROM_START( slyspy )
  1859.     ROM_REGION( 0x60000, REGION_CPU1 ) /* 68000 code */
  1860.     ROM_LOAD_EVEN( "fa14-3.17l",   0x00000, 0x10000, 0x54353a84 )
  1861.     ROM_LOAD_ODD ( "fa12-2.9l",    0x00000, 0x10000, 0x1b534294 )
  1862.     ROM_LOAD_EVEN( "fa15.19l",     0x20000, 0x10000, 0x04a79266 )
  1863.     ROM_LOAD_ODD ( "fa13.11l",     0x20000, 0x10000, 0x641cc4b3 )
  1864.  
  1865.     ROM_REGION( 0x10000, REGION_CPU2 )    /* Sound CPU */
  1866.     ROM_LOAD( "fa10.5h",      0x00000, 0x10000, 0xdfd2ff25 )
  1867.  
  1868.     ROM_REGION( 0x10000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars */
  1869.     ROM_LOAD( "fa05.11a",     0x04000, 0x04000, 0x09802924 )
  1870.     ROM_CONTINUE(             0x00000, 0x04000 )    /* the two halves are swapped */
  1871.     ROM_LOAD( "fa04.9a",      0x0c000, 0x04000, 0xec25b895 )
  1872.     ROM_CONTINUE(             0x08000, 0x04000 )
  1873.  
  1874.     ROM_REGION( 0x20000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* tiles */
  1875.     ROM_LOAD( "fa07.17a",     0x00000, 0x10000, 0xe932268b )
  1876.     ROM_LOAD( "fa06.15a",     0x10000, 0x10000, 0xc4dd38c0 )
  1877.  
  1878.     ROM_REGION( 0x40000, REGION_GFX3 | REGIONFLAG_DISPOSE ) /* tiles */
  1879.     ROM_LOAD( "fa09.22a",     0x00000, 0x20000, 0x1395e9be )
  1880.     ROM_LOAD( "fa08.21a",     0x20000, 0x20000, 0x4d7464db )
  1881.  
  1882.     ROM_REGION( 0x80000, REGION_GFX4 | REGIONFLAG_DISPOSE ) /* sprites */
  1883.     ROM_LOAD( "fa01.4a",      0x00000, 0x20000, 0x99b0cd92 )
  1884.     ROM_LOAD( "fa03.7a",      0x20000, 0x20000, 0x0e7ea74d )
  1885.     ROM_LOAD( "fa00.2a",      0x40000, 0x20000, 0xf7df3fd7 )
  1886.     ROM_LOAD( "fa02.5a",      0x60000, 0x20000, 0x84e8da9d )
  1887.  
  1888.     ROM_REGION( 0x20000, REGION_SOUND1 )    /* ADPCM samples */
  1889.     ROM_LOAD( "fa11.11k",     0x00000, 0x20000, 0x4e547bad )
  1890. ROM_END
  1891.  
  1892. ROM_START( slyspy2 )
  1893.     ROM_REGION( 0x60000, REGION_CPU1 ) /* 68000 code */
  1894.     ROM_LOAD_EVEN( "fa14-2.bin",   0x00000, 0x10000, 0x0e431e39 )
  1895.     ROM_LOAD_ODD ( "fa12-2.9l",    0x00000, 0x10000, 0x1b534294 )
  1896.     ROM_LOAD_EVEN( "fa15.19l",     0x20000, 0x10000, 0x04a79266 )
  1897.     ROM_LOAD_ODD ( "fa13.11l",     0x20000, 0x10000, 0x641cc4b3 )
  1898.  
  1899.     ROM_REGION( 0x10000, REGION_CPU2 )    /* Sound CPU */
  1900.     ROM_LOAD( "fa10.5h",      0x00000, 0x10000, 0xdfd2ff25 )
  1901.  
  1902.     ROM_REGION( 0x10000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars */
  1903.     ROM_LOAD( "fa05.11a",     0x04000, 0x04000, 0x09802924 )
  1904.     ROM_CONTINUE(             0x00000, 0x04000 )    /* the two halves are swapped */
  1905.     ROM_LOAD( "fa04.9a",      0x0c000, 0x04000, 0xec25b895 )
  1906.     ROM_CONTINUE(             0x08000, 0x04000 )
  1907.  
  1908.     ROM_REGION( 0x20000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* tiles */
  1909.     ROM_LOAD( "fa07.17a",     0x00000, 0x10000, 0xe932268b )
  1910.     ROM_LOAD( "fa06.15a",     0x10000, 0x10000, 0xc4dd38c0 )
  1911.  
  1912.     ROM_REGION( 0x40000, REGION_GFX3 | REGIONFLAG_DISPOSE ) /* tiles */
  1913.     ROM_LOAD( "fa09.22a",     0x00000, 0x20000, 0x1395e9be )
  1914.     ROM_LOAD( "fa08.21a",     0x20000, 0x20000, 0x4d7464db )
  1915.  
  1916.     ROM_REGION( 0x80000, REGION_GFX4 | REGIONFLAG_DISPOSE ) /* sprites */
  1917.     ROM_LOAD( "fa01.4a",      0x00000, 0x20000, 0x99b0cd92 )
  1918.     ROM_LOAD( "fa03.7a",      0x20000, 0x20000, 0x0e7ea74d )
  1919.     ROM_LOAD( "fa00.2a",      0x40000, 0x20000, 0xf7df3fd7 )
  1920.     ROM_LOAD( "fa02.5a",      0x60000, 0x20000, 0x84e8da9d )
  1921.  
  1922.     ROM_REGION( 0x20000, REGION_SOUND1 )    /* ADPCM samples */
  1923.     ROM_LOAD( "fa11.11k",     0x00000, 0x20000, 0x4e547bad )
  1924. ROM_END
  1925.  
  1926. ROM_START( secretag )
  1927.     ROM_REGION( 0x60000, REGION_CPU1 ) /* 68000 code */
  1928.     ROM_LOAD_EVEN( "fb14.bin",   0x00000, 0x10000, 0x9be6ac90 )
  1929.     ROM_LOAD_ODD ( "fb12.bin",   0x00000, 0x10000, 0x28904b6b )
  1930.     ROM_LOAD_EVEN( "fb15.bin",   0x20000, 0x10000, 0x106bb26c )
  1931.     ROM_LOAD_ODD ( "fb13.bin",   0x20000, 0x10000, 0x90523413 )
  1932.  
  1933.     ROM_REGION( 0x10000, REGION_CPU2 )    /* Sound CPU */
  1934.     ROM_LOAD( "fa10.5h",      0x00000, 0x10000, 0xdfd2ff25 )
  1935.  
  1936.     ROM_REGION( 0x10000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars */
  1937.     ROM_LOAD( "fa05.11a",     0x04000, 0x04000, 0x09802924 )
  1938.     ROM_CONTINUE(             0x00000, 0x04000 )    /* the two halves are swapped */
  1939.     ROM_LOAD( "fa04.9a",      0x0c000, 0x04000, 0xec25b895 )
  1940.     ROM_CONTINUE(             0x08000, 0x04000 )
  1941.  
  1942.     ROM_REGION( 0x20000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* tiles */
  1943.     ROM_LOAD( "fa07.17a",     0x00000, 0x10000, 0xe932268b )
  1944.     ROM_LOAD( "fa06.15a",     0x10000, 0x10000, 0xc4dd38c0 )
  1945.  
  1946.     ROM_REGION( 0x40000, REGION_GFX3 | REGIONFLAG_DISPOSE ) /* tiles */
  1947.     ROM_LOAD( "fa09.22a",     0x00000, 0x20000, 0x1395e9be )
  1948.     ROM_LOAD( "fa08.21a",     0x20000, 0x20000, 0x4d7464db )
  1949.  
  1950.     ROM_REGION( 0x80000, REGION_GFX4 | REGIONFLAG_DISPOSE ) /* sprites */
  1951.     ROM_LOAD( "fa01.4a",      0x00000, 0x20000, 0x99b0cd92 )
  1952.     ROM_LOAD( "fa03.7a",      0x20000, 0x20000, 0x0e7ea74d )
  1953.     ROM_LOAD( "fa00.2a",      0x40000, 0x20000, 0xf7df3fd7 )
  1954.     ROM_LOAD( "fa02.5a",      0x60000, 0x20000, 0x84e8da9d )
  1955.  
  1956.     ROM_REGION( 0x20000, REGION_SOUND1 )    /* ADPCM samples */
  1957.     ROM_LOAD( "fa11.11k",     0x00000, 0x20000, 0x4e547bad )
  1958. ROM_END
  1959.  
  1960. ROM_START( secretab )
  1961.     ROM_REGION( 0x60000, REGION_CPU1 ) /* 68000 code */
  1962.     ROM_LOAD_EVEN( "sa_05.bin",    0x00000, 0x10000, 0x00000001 )
  1963.     ROM_LOAD_ODD ( "sa_03.bin",    0x00000, 0x10000, 0x00000001 )
  1964.     ROM_LOAD_EVEN( "sa_06.bin",    0x20000, 0x10000, 0x00000001 )
  1965.     ROM_LOAD_ODD ( "sa_04.bin",    0x20000, 0x10000, 0x00000001 )
  1966.  
  1967.     ROM_REGION( 0x10000, REGION_CPU2 )    /* Sound CPU */
  1968.     ROM_LOAD( "fa10.5h",      0x00000, 0x10000, 0xdfd2ff25 )
  1969.  
  1970.     ROM_REGION( 0x10000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars */
  1971.     ROM_LOAD( "fa05.11a",     0x04000, 0x04000, 0x09802924 )
  1972.     ROM_CONTINUE(             0x00000, 0x04000 )    /* the two halves are swapped */
  1973.     ROM_LOAD( "fa04.9a",      0x0c000, 0x04000, 0xec25b895 )
  1974.     ROM_CONTINUE(             0x08000, 0x04000 )
  1975.  
  1976.     ROM_REGION( 0x20000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* tiles */
  1977.     ROM_LOAD( "fa07.17a",     0x00000, 0x10000, 0xe932268b )
  1978.     ROM_LOAD( "fa06.15a",     0x10000, 0x10000, 0xc4dd38c0 )
  1979.  
  1980.     ROM_REGION( 0x40000, REGION_GFX3 | REGIONFLAG_DISPOSE ) /* tiles */
  1981.     ROM_LOAD( "fa09.22a",     0x00000, 0x20000, 0x1395e9be )
  1982.     ROM_LOAD( "fa08.21a",     0x20000, 0x20000, 0x4d7464db )
  1983.  
  1984.     ROM_REGION( 0x80000, REGION_GFX4 | REGIONFLAG_DISPOSE ) /* sprites */
  1985.     ROM_LOAD( "fa01.4a",      0x00000, 0x20000, 0x99b0cd92 )
  1986.     ROM_LOAD( "fa03.7a",      0x20000, 0x20000, 0x0e7ea74d )
  1987.     ROM_LOAD( "fa00.2a",      0x40000, 0x20000, 0xf7df3fd7 )
  1988.     ROM_LOAD( "fa02.5a",      0x60000, 0x20000, 0x84e8da9d )
  1989.  
  1990.     ROM_REGION( 0x20000, REGION_SOUND1 )    /* ADPCM samples */
  1991.     ROM_LOAD( "fa11.11k",     0x00000, 0x20000, 0x4e547bad )
  1992. ROM_END
  1993.  
  1994. ROM_START( midres )
  1995.     ROM_REGION( 0x80000, REGION_CPU1 ) /* 68000 code */
  1996.     ROM_LOAD_EVEN( "fk_14.rom",    0x00000, 0x20000, 0xde7522df )
  1997.     ROM_LOAD_ODD ( "fk_12.rom",    0x00000, 0x20000, 0x3494b8c9 )
  1998.     ROM_LOAD_EVEN( "fl15",         0x40000, 0x20000, 0x1328354e )
  1999.     ROM_LOAD_ODD ( "fl13",         0x40000, 0x20000, 0xe3b3955e )
  2000.  
  2001.     ROM_REGION( 0x10000, REGION_CPU2 )    /* Sound CPU */
  2002.     ROM_LOAD( "fl16",              0x00000, 0x10000, 0x66360bdf )
  2003.  
  2004.     ROM_REGION( 0x20000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars */
  2005.     ROM_LOAD( "fk_05.rom",         0x08000, 0x08000, 0x3cdb7453 )
  2006.     ROM_CONTINUE(                  0x00000, 0x08000 )    /* the two halves are swapped */
  2007.     ROM_LOAD( "fk_04.rom",         0x18000, 0x08000, 0x325ba20c )
  2008.     ROM_CONTINUE(                  0x10000, 0x08000 )
  2009.  
  2010.     ROM_REGION( 0x80000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* tiles */
  2011.     ROM_LOAD( "fl09",              0x00000, 0x20000, 0x907d5910 )
  2012.     ROM_LOAD( "fl08",              0x20000, 0x20000, 0xa936c03c )
  2013.     ROM_LOAD( "fl07",              0x40000, 0x20000, 0x2068c45c )
  2014.     ROM_LOAD( "fl06",              0x60000, 0x20000, 0xb7241ab9 )
  2015.  
  2016.     ROM_REGION( 0x40000, REGION_GFX3 | REGIONFLAG_DISPOSE ) /* tiles */
  2017.     ROM_LOAD( "fl11",              0x00000, 0x20000, 0xb86b73b4 )
  2018.     ROM_LOAD( "fl10",              0x20000, 0x20000, 0x92245b29 )
  2019.  
  2020.     ROM_REGION( 0x80000, REGION_GFX4 | REGIONFLAG_DISPOSE ) /* sprites */
  2021.     ROM_LOAD( "fl01",              0x00000, 0x20000, 0x2c8b35a7 )
  2022.     ROM_LOAD( "fl03",              0x20000, 0x20000, 0x1eefed3c )
  2023.     ROM_LOAD( "fl00",              0x40000, 0x20000, 0x756fb801 )
  2024.     ROM_LOAD( "fl02",              0x60000, 0x20000, 0x54d2c120 )
  2025.  
  2026.     ROM_REGION( 0x20000, REGION_SOUND1 )    /* ADPCM samples */
  2027.     ROM_LOAD( "fl17",              0x00000, 0x20000, 0x9029965d )
  2028. ROM_END
  2029.  
  2030. ROM_START( midresu )
  2031.     ROM_REGION( 0x80000, REGION_CPU1 ) /* 68000 code */
  2032.     ROM_LOAD_EVEN( "fl14",         0x00000, 0x20000, 0x2f9507a2 )
  2033.     ROM_LOAD_ODD ( "fl12",         0x00000, 0x20000, 0x3815ad9f )
  2034.     ROM_LOAD_EVEN( "fl15",         0x40000, 0x20000, 0x1328354e )
  2035.     ROM_LOAD_ODD ( "fl13",         0x40000, 0x20000, 0xe3b3955e )
  2036.  
  2037.     ROM_REGION( 0x10000, REGION_CPU2 )    /* Sound CPU */
  2038.     ROM_LOAD( "fl16",              0x00000, 0x10000, 0x66360bdf )
  2039.  
  2040.     ROM_REGION( 0x20000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars */
  2041.     ROM_LOAD( "fl05",              0x08000, 0x08000, 0xd75aba06 )
  2042.     ROM_CONTINUE(                  0x00000, 0x08000 )    /* the two halves are swapped */
  2043.     ROM_LOAD( "fl04",              0x18000, 0x08000, 0x8f5bbb79 )
  2044.     ROM_CONTINUE(                  0x10000, 0x08000 )
  2045.  
  2046.     ROM_REGION( 0x80000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* tiles */
  2047.     ROM_LOAD( "fl09",              0x00000, 0x20000, 0x907d5910 )
  2048.     ROM_LOAD( "fl08",              0x20000, 0x20000, 0xa936c03c )
  2049.     ROM_LOAD( "fl07",              0x40000, 0x20000, 0x2068c45c )
  2050.     ROM_LOAD( "fl06",              0x60000, 0x20000, 0xb7241ab9 )
  2051.  
  2052.     ROM_REGION( 0x40000, REGION_GFX3 | REGIONFLAG_DISPOSE ) /* tiles */
  2053.     ROM_LOAD( "fl11",              0x00000, 0x20000, 0xb86b73b4 )
  2054.     ROM_LOAD( "fl10",              0x20000, 0x20000, 0x92245b29 )
  2055.  
  2056.     ROM_REGION( 0x80000, REGION_GFX4 | REGIONFLAG_DISPOSE ) /* sprites */
  2057.     ROM_LOAD( "fl01",              0x00000, 0x20000, 0x2c8b35a7 )
  2058.     ROM_LOAD( "fl03",              0x20000, 0x20000, 0x1eefed3c )
  2059.     ROM_LOAD( "fl00",              0x40000, 0x20000, 0x756fb801 )
  2060.     ROM_LOAD( "fl02",              0x60000, 0x20000, 0x54d2c120 )
  2061.  
  2062.     ROM_REGION( 0x20000, REGION_SOUND1 )    /* ADPCM samples */
  2063.     ROM_LOAD( "fl17",              0x00000, 0x20000, 0x9029965d )
  2064. ROM_END
  2065.  
  2066. ROM_START( midresj )
  2067.     ROM_REGION( 0x80000, REGION_CPU1 ) /* 68000 code */
  2068.     ROM_LOAD_EVEN( "fh14",         0x00000, 0x20000, 0x6d632a51 )
  2069.     ROM_LOAD_ODD ( "fh12",         0x00000, 0x20000, 0x45143384 )
  2070.     ROM_LOAD_EVEN( "fl15",         0x40000, 0x20000, 0x1328354e )
  2071.     ROM_LOAD_ODD ( "fl13",         0x40000, 0x20000, 0xe3b3955e )
  2072.  
  2073.     ROM_REGION( 0x10000, REGION_CPU2 )    /* Sound CPU */
  2074.     ROM_LOAD( "fh16",              0x00000, 0x10000, 0x00736f32 )
  2075.  
  2076.     ROM_REGION( 0x20000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars */
  2077.     ROM_LOAD( "fk_05.rom",         0x08000, 0x08000, 0x3cdb7453 )
  2078.     ROM_CONTINUE(                  0x00000, 0x08000 )    /* the two halves are swapped */
  2079.     ROM_LOAD( "fk_04.rom",         0x18000, 0x08000, 0x325ba20c )
  2080.     ROM_CONTINUE(                  0x10000, 0x08000 )
  2081.  
  2082.     ROM_REGION( 0x80000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* tiles */
  2083.     ROM_LOAD( "fl09",              0x00000, 0x20000, 0x907d5910 )
  2084.     ROM_LOAD( "fl08",              0x20000, 0x20000, 0xa936c03c )
  2085.     ROM_LOAD( "fl07",              0x40000, 0x20000, 0x2068c45c )
  2086.     ROM_LOAD( "fl06",              0x60000, 0x20000, 0xb7241ab9 )
  2087.  
  2088.     ROM_REGION( 0x40000, REGION_GFX3 | REGIONFLAG_DISPOSE ) /* tiles */
  2089.     ROM_LOAD( "fl11",              0x00000, 0x20000, 0xb86b73b4 )
  2090.     ROM_LOAD( "fl10",              0x20000, 0x20000, 0x92245b29 )
  2091.  
  2092.     ROM_REGION( 0x80000, REGION_GFX4 | REGIONFLAG_DISPOSE ) /* sprites */
  2093.     ROM_LOAD( "fl01",              0x00000, 0x20000, 0x2c8b35a7 )
  2094.     ROM_LOAD( "fl03",              0x20000, 0x20000, 0x1eefed3c )
  2095.     ROM_LOAD( "fl00",              0x40000, 0x20000, 0x756fb801 )
  2096.     ROM_LOAD( "fl02",              0x60000, 0x20000, 0x54d2c120 )
  2097.  
  2098.     ROM_REGION( 0x20000, REGION_SOUND1 )    /* ADPCM samples */
  2099.     ROM_LOAD( "fh17",              0x00000, 0x20000, 0xc7b0a24e )
  2100. ROM_END
  2101.  
  2102. ROM_START( bouldash )
  2103.     ROM_REGION( 0x60000, REGION_CPU1 ) /* 68000 code */
  2104.     ROM_LOAD_EVEN( "fn-15",   0x00000, 0x10000, 0xca19a967 )
  2105.     ROM_LOAD_ODD ( "fn-12",   0x00000, 0x10000, 0x242bdc2a )
  2106.     ROM_LOAD_EVEN( "fn-16",   0x20000, 0x10000, 0xb7217265 )
  2107.     ROM_LOAD_ODD ( "fn-13",   0x20000, 0x10000, 0x19209ef4 )
  2108.     ROM_LOAD_EVEN( "fn-17",   0x40000, 0x10000, 0x78a632a1 )
  2109.     ROM_LOAD_ODD ( "fn-14",   0x40000, 0x10000, 0x69b6112d )
  2110.  
  2111.     ROM_REGION( 0x10000, REGION_CPU2 )    /* Sound CPU */
  2112.     ROM_LOAD( "fn-10",      0x00000, 0x10000, 0xc74106e7 )
  2113.  
  2114.     ROM_REGION( 0x20000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars */
  2115.     ROM_LOAD( "fn-04",        0x08000, 0x08000, 0x40f5a760 )
  2116.     ROM_CONTINUE(             0x00000, 0x08000 )    /* the two halves are swapped */
  2117.     ROM_LOAD( "fn-05",        0x18000, 0x08000, 0x824f2168 )
  2118.     ROM_CONTINUE(             0x10000, 0x08000 )
  2119.  
  2120.     ROM_REGION( 0x20000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* tiles */
  2121.     ROM_LOAD( "fn-07",        0x00000, 0x10000, 0xeac6a3b3 )
  2122.     ROM_LOAD( "fn-06",        0x10000, 0x10000, 0x3feee292 )
  2123.  
  2124.     ROM_REGION( 0x40000, REGION_GFX3 | REGIONFLAG_DISPOSE ) /* tiles */
  2125.     ROM_LOAD( "fn-09",        0x00000, 0x20000, 0xc2b27bd2 )
  2126.     ROM_LOAD( "fn-08",        0x20000, 0x20000, 0x5ac97178 )
  2127.  
  2128.     ROM_REGION( 0x40000, REGION_GFX4 | REGIONFLAG_DISPOSE ) /* sprites */
  2129.     ROM_LOAD( "fn-01",        0x00000, 0x10000, 0x9333121b )
  2130.     ROM_LOAD( "fn-03",        0x10000, 0x10000, 0x254ba60f )
  2131.     ROM_LOAD( "fn-00",        0x20000, 0x10000, 0xec18d098 )
  2132.     ROM_LOAD( "fn-02",        0x30000, 0x10000, 0x4f060cba )
  2133.  
  2134.     ROM_REGION( 0x20000, REGION_SOUND1 )    /* ADPCM samples */
  2135.     ROM_LOAD( "fn-11",      0x00000, 0x10000, 0x990fd8d9 )
  2136. ROM_END
  2137.  
  2138. /******************************************************************************/
  2139.  
  2140. static void h6280_decrypt(int memory_area)
  2141. {
  2142.     int i;
  2143.     unsigned char *RAM = memory_region(memory_area);
  2144.  
  2145.     /* Read each byte, decrypt it */
  2146.     for (i=0x00000; i<0x10000; i++)
  2147.         RAM[i]=(RAM[i] & 0x7e) | ((RAM[i] & 0x1) << 7) | ((RAM[i] & 0x80) >> 7);
  2148. }
  2149.  
  2150. static void init_dec0(void)
  2151. {
  2152.     dec0_custom_memory();
  2153. }
  2154.  
  2155. static void init_hippodrm(void)
  2156. {
  2157.     unsigned char *RAM = memory_region(REGION_CPU3);
  2158.  
  2159.     dec0_custom_memory();
  2160.  
  2161.     h6280_decrypt(REGION_CPU3);
  2162.  
  2163.     /* The protection cpu has additional memory mapped protection! */
  2164.     RAM[0x189]=0x60; /* RTS prot area */
  2165.     RAM[0x1af]=0x60; /* RTS prot area */
  2166.     RAM[0x1db]=0x60; /* RTS prot area */
  2167.     RAM[0x21a]=0x60; /* RTS prot area */
  2168. }
  2169.  
  2170. static void init_slyspy(void)
  2171. {
  2172.     unsigned char *RAM = memory_region(REGION_CPU2);
  2173.  
  2174.     dec0_custom_memory();
  2175.  
  2176.     h6280_decrypt(REGION_CPU2);
  2177.  
  2178.     /* Slyspy sound cpu has some protection */
  2179.     RAM[0xf2d]=0xea;
  2180.     RAM[0xf2e]=0xea;
  2181. }
  2182.  
  2183. /******************************************************************************/
  2184.  
  2185. GAMEX( 1987, hbarrel,  0,        hbarrel,  hbarrel,  dec0,     ROT270, "Data East USA", "Heavy Barrel (US)", GAME_NO_COCKTAIL )
  2186. GAMEX( 1987, hbarrelw, hbarrel,  hbarrel,  hbarrel,  dec0,     ROT270, "Data East Corporation", "Heavy Barrel (World)", GAME_NO_COCKTAIL )
  2187. GAMEX( 1988, baddudes, 0,        baddudes, baddudes, dec0,     ROT0,   "Data East USA", "Bad Dudes vs. Dragonninja (US)", GAME_NO_COCKTAIL )
  2188. GAMEX( 1988, drgninja, baddudes, baddudes, baddudes, dec0,     ROT0,   "Data East Corporation", "Dragonninja (Japan)", GAME_NO_COCKTAIL )
  2189. GAMEX( 1988, birdtry,  0,        birdtry,  hbarrel,  dec0,     ROT270, "Data East Corporation", "Birdie Try (Japan)", GAME_NOT_WORKING | GAME_NO_COCKTAIL)
  2190. GAMEX( 1988, robocop,  0,        robocop,  robocop,  dec0,     ROT0,   "Data East Corporation", "Robocop (World revision 3)", GAME_UNEMULATED_PROTECTION | GAME_NO_COCKTAIL )
  2191. GAMEX( 1988, robocopu, robocop,  robocop,  robocop,  dec0,     ROT0,   "Data East USA", "Robocop (US revision 1)", GAME_UNEMULATED_PROTECTION | GAME_NO_COCKTAIL )
  2192. GAMEX( 1988, robocpu0, robocop,  robocop,  robocop,  dec0,     ROT0,   "Data East USA", "Robocop (US revision 0)", GAME_UNEMULATED_PROTECTION | GAME_NO_COCKTAIL )
  2193. GAMEX( 1988, robocopb, robocop,  robocopb, robocop,  dec0,     ROT0,   "bootleg", "Robocop (World bootleg)", GAME_NO_COCKTAIL )
  2194. GAMEX( 1989, hippodrm, 0,        hippodrm, hippodrm, hippodrm, ROT0,   "Data East USA", "Hippodrome (US)", GAME_NO_COCKTAIL )
  2195. GAMEX( 1989, ffantasy, hippodrm, hippodrm, hippodrm, hippodrm, ROT0,   "Data East Corporation", "Fighting Fantasy (Japan)", GAME_NO_COCKTAIL )
  2196. GAMEX( 1989, slyspy,   0,        slyspy,   slyspy,   slyspy,   ROT0,   "Data East USA", "Sly Spy (US revision 3)", GAME_NO_COCKTAIL )
  2197. GAMEX( 1989, slyspy2,  slyspy,   slyspy,   slyspy,   slyspy,   ROT0,   "Data East USA", "Sly Spy (US revision 2)", GAME_NO_COCKTAIL )
  2198. GAMEX( 1989, secretag, slyspy,   slyspy,   slyspy,   slyspy,   ROT0,   "Data East Corporation", "Secret Agent (World)", GAME_NO_COCKTAIL )
  2199. GAMEX( 1989, secretab, slyspy,   slyspy,   slyspy,   dec0,     ROT0,   "Data East USA", "Sly Spy (revision 2)", GAME_NO_COCKTAIL )
  2200. GAMEX( 1989, midres,   0,        midres,   midres,   dec0,     ROT0,   "Data East Corporation", "Midnight Resistance (World)", GAME_NO_COCKTAIL )
  2201. GAMEX( 1989, midresu,  midres,   midres,   midres,   dec0,     ROT0,   "Data East USA", "Midnight Resistance (US)", GAME_NO_COCKTAIL )
  2202. GAMEX( 1989, midresj,  midres,   midres,   midres,   dec0,     ROT0,   "Data East Corporation", "Midnight Resistance (Japan)", GAME_NO_COCKTAIL )
  2203. GAMEX( 1990, bouldash, 0,        slyspy,   bouldash, slyspy,   ROT0,   "Data East Corporation (licensed from First Star)", "Boulder Dash / Boulder Dash Part 2 (World)", GAME_NO_COCKTAIL )
  2204.